sql 子查询

子查询也就是嵌套SELECT语句,一个 SELECT 语句的查询结果可以作为另一个语句的输入。
子查询能够出现在Where子句中,
也能够出现在from子句中,作为一个临时表使用。

查询选修了老师名叫Lee(假设唯一)的学生名字
sql> select stName from Student
where stId in(select distinct stId from score where teId=(select teId from teacher where teName='Lee'));

 

子查询的优点

  • 与连接相比,子查询通过将它们构建为独立的部分来提高查询可读性。
  • 易于理解和维护子查询。
  • 子查询可以替代复杂的连接和联合。

子查询的缺点

  • 子查询不能在同一个 SQL 语句中修改一个表并从同一个表中进行选择。
  • 子查询是一项开销很大的任务,因此使用连接操作会更快。

 

 

子查询用连接替换

https://blog.51cto.com/u_16099274/6547647

 

 

使用子查询必须遵循以下几个规则:

  • 子查询必须括在圆括号中。
  • 子查询的 SELECT 子句中只能有一个列,除非主查询中有多个列,用于与子查询选中的列相比较。
  • 子查询不能使用 ORDER BY,不过主查询可以。在子查询中,GROUP BY 可以起到同 ORDER BY 相同的作用。
  • 返回多行数据的子查询只能同多值操作符一起使用,比如 IN 操作符。
  • SELECT 列表中不能包含任何对 BLOB、ARRAY、CLOB 或者 NCLOB 类型值的引用。
  • 子查询不能直接用在聚合函数中。
  • BETWEEN 操作符不能同子查询一起使用,但是 BETWEEN 操作符可以用在子查询中。
posted @ 2023-10-11 10:48  超级宝宝11  阅读(100)  评论(0编辑  收藏  举报