1、子查询
(1)子查询是指出现在其他的SQL语句内的SELECT字句
例如:
SELECT * FROM t1 WHERE col1 = (SELECT col2 GROM t2);
■解说:
--- SELECT * FROM t1 表示外部查询(Outer statement)
--- SELECT col2 GROM t2 表示内部查询,也称为子查询(subquery)
!注意:
---子查询指嵌套在查询内部,并且必须始终出现在圆括号内
---子查询可以包含多个关键字或条件
如:DISTINCT,GROUP BY ,ORDER BY ,LIMIT ,函数等。
---子查询的外层查询可以是:SELECT ,INSERT,UPDATE,SET 或DO.
---子查询可以返回标量,一行,一列或子查询。
(2)使用比较运算符的子查询
---使用比较运算符的子查询
= ,>,<,>=,<=,<>,!=,<=>
---语法结构
SELECT * FROM t1 WHERE col1 > (SELECT col2 GROM t2);
(3)使用ANY,SOME,或ALL修饰的比较运算符
---语法结构
SELECT * FROM t1 WHERE col1 =ANY (SELECT col2 GROM t2);
■解说:
ANY ,SOME,ALL关键字
----------------------------------------------
ANY SOME ALL
----------------------------------------------
>,>= 最小值 最小值 最大值
----------------------------------------------
<,<= 最大值 最大值 最小值
----------------------------------------------
= 任意值 任意值
----------------------------------------------
<>,!=, 任意值
----------------------------------------------
(4)使用[NOT] IN的子查询
---语法结构
SELECT * FROM t1 WHERE col1 ANY (SELECT col2 GROM t2);
!注意:
=ANY运算符与IN等效
---如果子查询返回任意行,EXISTS将返回TRUE;否则为FALSE
(6)将查询结构写入数据表
---语法结构
INSERT [INTO] table_name [(col_nmae,..)]
SELECT...
(1)子查询是指出现在其他的SQL语句内的SELECT字句
例如:
SELECT * FROM t1 WHERE col1 = (SELECT col2 GROM t2);
■解说:
--- SELECT * FROM t1 表示外部查询(Outer statement)
--- SELECT col2 GROM t2 表示内部查询,也称为子查询(subquery)
!注意:
---子查询指嵌套在查询内部,并且必须始终出现在圆括号内
---子查询可以包含多个关键字或条件
如:DISTINCT,GROUP BY ,ORDER BY ,LIMIT ,函数等。
---子查询的外层查询可以是:SELECT ,INSERT,UPDATE,SET 或DO.
---子查询可以返回标量,一行,一列或子查询。
(2)使用比较运算符的子查询
---使用比较运算符的子查询
= ,>,<,>=,<=,<>,!=,<=>
---语法结构
SELECT * FROM t1 WHERE col1 > (SELECT col2 GROM t2);
(3)使用ANY,SOME,或ALL修饰的比较运算符
---语法结构
SELECT * FROM t1 WHERE col1 =ANY (SELECT col2 GROM t2);
■解说:
ANY ,SOME,ALL关键字
----------------------------------------------
ANY SOME ALL
----------------------------------------------
>,>= 最小值 最小值 最大值
----------------------------------------------
<,<= 最大值 最大值 最小值
----------------------------------------------
= 任意值 任意值
----------------------------------------------
<>,!=, 任意值
----------------------------------------------
(4)使用[NOT] IN的子查询
---语法结构
SELECT * FROM t1 WHERE col1 ANY (SELECT col2 GROM t2);
!注意:
=ANY运算符与IN等效
!= ALL 或<>运算符与NOT IN等效
---如果子查询返回任意行,EXISTS将返回TRUE;否则为FALSE
(6)将查询结构写入数据表
---语法结构
INSERT [INTO] table_name [(col_nmae,..)]
SELECT...