zl程序教程

您现在的位置是:首页 >  其它

当前栏目

10. 子查询

查询 10
2023-09-14 08:57:57 时间

# 作为where条件,若子查询返回单行或单列值,则被当成一个标量值使用

SELECT *

FROM student

WHERE

     grade  (

         # 此子查询返回单行数据

         SELECT math

         FROM  grades

         WHERE id =1

     );

 

# 若子查询返回多个值,则需要使用in、any、all等关键字

SELECT *

FROM student

WHERE

     id IN(

         # in可单独使用,效果同比较运算符的in,子查询返回的多个值将被当成一个值列表。

         SELECT id

         FROM  grades

         WHERE id =5  OR id =6

     );

 

# =any

SELECT *

FROM student

WHERE

     # =any等价于in

     id =ANY(SELECT id FROM grades);

 

#  =all

SELECT *

FROM  student

WHERE

     id  =ALL(SELECT id FROM grades);

 

# 子查询返回多行多列,则where应该有对应的数据列,并用圆括号将其组合起来。

SELECT  s.*

FROM student s

WHERE # 组合内的字段均须对应相等

     (id, grade)=ANY(SELECT id, math FROM grades g);


子查询(2) 如果子查询的执行依赖于外部查询,通常情况下都是因为子查询中的表用到了外部的表,并进行了条件关联,因此每执行一次外部查询,子查询都要重新计算一次,这样的子查询就称之为 关联子查询 。相关子查询按照一行接一行的顺序执行,主查询的每一行都执行一次子查询。
zxiaofan 【zxiaofan.com】Life is all about choices!生命不息,学习不止。