- 在查询语句中的WHERE条件子句中,又嵌套了另外一个查询语句
- 主查询的where子句使用子查询返回的结果作为条件
- 如果子查询的结果是单一的一个值,可以使用比较运算符(=、>、>=、<、<=、<>、!=)
- 如果子查询的结果返回的是一个集合,一般会使用:in 或者 not in
SELECT *FROM tableName WHEREcolnum > (SELECTAVG(amount) FROM tableName);
SELECT *FROM tableName WHEREcolnum NOT IN (SELECTDISTINCT colnum FROMtableName);
- 如果一个查询需求,可以使用连接查询的,也可以使用子查询得到,则通常推荐使用连接查询,效率会更高,这也是数据库语句优化的一种方式
- 在 MySQL SELECT 语句中,允许使用 GROUP BY 子句,将结果集中的数据行根据选择列的值进行逻辑分组,
- 以便能汇总表内容的子集,实现对每个组而不是对整个结果集进行整合
- GROUP BY 属性名(列) [HAVING 条件表达式]
- 属性名:是指按照该字段的值进行分组
- 用来限制分组后的显示,符合条件表达式的结果将被显示
- 执行的时机不同,where是在分组之前过滤条件,having是分组之后的的过滤
- 判断条件不同,where后面不能跟聚合函数进行判断,having是可以的。
- 注意:分组之后,查询的字段一般都是聚合函数或者分组字段,查询其他的没有任何意义