一条sql语句
当需要从一个表中检索信息,当检索条件值又是来自该表本身的内部数据时,子查询非常有用。
子查询可以嵌入以下SQL子句中:where子句、having子句和from子句。语句结构简单,可读性强。
子查询查询顺序,先执行子查询,获取结果之后,再执行外部语句,效率比较低。
1.单行子查询
内部select语句只返回一行结果的查询(单列)
主查询的where子句使用单行子查询,返回结果要采用单行比较运算符。
说明:(1)子查询要用括号括起来
(2)将子查询放在比较运算符的右边
(3)不要在子查询中使用order by 子句,select语句中只能有一个order by 语句,并且它只能是主select语句的最后一个子句。
2.where子句中使用单行子查询
3.单行子查询中使用组函数
4.having子句中使用单行子查询
5.from子句中使用子查询
必须给子查询指定别名
括号里的是多条记录,而where是单行查询。
where后面只可以比较单行记录结果,多行不可以运算符比较。分组之后多条记录作为临时表看待,并且一定要起个别名。
小结:
优点:复杂多表联查 简化sql语句 可读性强
缺点:效率低下