SQL知识点

子查询可以出现的位置和不可以出现的位置(准确性待商榷)

可以出现的位置

子查询语句可以嵌套在 sql 语句中任何表达式出现的位置。
查询sql 语句的组成一般是这样

1
select <字段> from <表名> where <查询条件>
SQL

字段、表名、查询条件都可以嵌套子查询!

1
2
3
select <子查询> from <表名> where <查询条件>
select <字段> from <子查询> as <别名> where <查询条件>
select <字段> from <表名> where <子查询>
SQL

常见错误写法

1
select * from (select * from emp);
SQL

这样写是会报错的,因为没有给子查询指定别名

正确写法

1
select * from (select * from emp) as t;
SQL

注意点
如果<表名>嵌套的是子查询,必须给表指定别名,一般会返回多行多列的结果集,当做一张新的临时表

只出现在子查询中而没有出现在父查询中的表不能包含在输出列中
多层嵌套子查询的最终结果集只包含父查询(最外层的查询)的select 语句中出现的字段
子查询的结果集通常会作为其外层查询的数据源或用于条件判断

where、select、having、from。

在select后面使用应注意什么?

在select后面使用的子查询必须为“单行子查询”。

含义是select的子查询只能有1条记录,不能有多条记录。

为什么使用having不使用where呢?

因为在where语句中有些函数不可以使用,所以要用having。

from后面除了跟一个表名外还可以跟什么?

from后面本质上跟一个集合,只要是集合都可以放在from后面。比如,可以放一个select语句。

不可以出现的问题

不可以在group by的后面使用子查询


SQL知识点
https://leehoward.cn/2022/02/22/SQL知识点/
作者
lihao
发布于
2022年2月22日
许可协议