第四章 第四节:子查询 (Subquery)
来源:互联网 发布:马里亚纳网络性奴 编辑:程序博客网 时间:2024/06/07 09:36
子查询:出现在其他SQL语句内的SELECT子句
SELECT * FROM t1 WHERE col1=(SELECT COL2 FROM t2);
1、子查询必须出现在查询内部,并且必须始终出现在圆括号内部
2、子查询可以包括多个关键字或者条件,
DISTINCT , GROUP BY ,ORDER BY, LIMIT ,函数等。
3、子查询的外层查询可以是:SELECT ,INSERT ,UPDATE ,SET 和DO。
子查询可以返回标量,一行,一列或子查询。
由比较运算符引发的子查询
=、>、<、>=、<=、<>、!=、<=>
查找平均价格:
SELECT AVG(goods_price) FROM goods;
保留小数位的函数 ROUND
SELECT ROUND(AVG(goods_price),2) FROM goods; //保留两位小数
查询价格高于平均价格的所有信息
SELECT * FROM goods WHERE goods_price >(SELECT ROUND(AVG(goods_price),2) FROM goods);
用ANY,SOME,ALL修饰的比较运算符
查询所有超极本类型的电脑的价格
SELECT goods_price FROM goods where cate='超极本';//假设有3条信息,即有不同的三种价格
查询所有电脑中价格大于超极本价格的所有信息:
那么:
SELECT * FROM goods where price > (SELECT goods_price FROM goods where cate='超极本');
就是错误的,因为子查询返回了三条信息,所以引入ANY,SOME,和ALL
正确的代码是:
SELECT * FROM goods WHERE price> ANY (SELECT goods_price FROM goods where cate='超极本');
因为>ANY/SOME是大于最小值的数据,所以,这条语句就是查询价格大于超极本最低价格的电脑的所有信息
SELECT * FROM goods WHERE price> ALL (SELECT goods_price FROM goods where cate='超极本');
因为>ALL是大于最大值的数据,所以,这条语句就是查询价格大于超极本最高价格的电脑的所有信息,但是不能=ALL
由[NOT] IN/EXISTS引发的子查询
=ANY 与IN 等效 等于任何一个就是在范围内
!=ALL 或<>ALL 与NOT IN 等效 一个都不等于就是不在范围内
有[NOT]EXISTS引发的子查询
如果子查询返回任何行,EXISTS返回TRUE , 否则返回FALSE.
阅读全文
0 0
- 第四章 第四节:子查询 (Subquery)
- 第四章 第四节 查询所有留言+删除留言
- 第四章高级查询
- 第四章 高级查询
- 第四章:高级查询
- MySQL子查询(subquery)分类
- 第一本书 第四章 课上练习 (子查询,in ,分页 ,exists)
- 第四章 数据查询1(上机)
- 第四章 数据查询2 (上机)
- 第四章 数据基本查询
- SQL 第四章高级查询
- 相关子查询(correlated subquery) 与非相关子查询
- PARTITION RANGE SUBQUERY子查询消除
- 关于关联子查询--correlated subquery
- 过滤器NSPredicate的Coredata 子查询 SUBQUERY
- Oracle 子查询展开(subquery unnesting)
- 第四章 4.1最大子数组问题(分治)
- 第四章第四题
- 圆的反演变换(*)
- 网易题目:集合+
- 实验吧三道sql注入题目解题思路以及当中至少点整理(简单的SQL注入、简单的SQL注入2、简单的SQL注入)
- 区间查询+位运算
- 时间复杂度和空间复杂度
- 第四章 第四节:子查询 (Subquery)
- java继承链中方法调用优先级.顺序:this.show(object)>super.show(object)>this.show((super)object)>super.show((super))
- 一对多查询(10)
- php eval
- 士兵杀敌(一)【NYOJ 108 线段树】
- 指定变量的类型及变量的间接引用
- android material design 插件图标位置问题
- js常用返回网页顶部几种方法
- Codeforces Round #294 (Div. 2) E LCA倍增