子查询的介绍
子查询是指嵌套在其他SQL语句内的查询语句,且必须始终出现在圆括号内;执行时先计算子查询,子查询的结果作为外层另一个查询的过滤条件
-
例:SELECT * FROM table1 WHERE col1 = (SELECT col2 FROM table2);
带比较运算符的子查询
用ANY、ALL、SOME关键字修饰子查询
- ANY、ALL、SOME关键字放在比较运算符的后面
- ANY和SOME是同义词,表示满足内层子查询中的任何一个条件
- ALL表示需要同时满足所有内层查询的条件
带关键字[NOT] IN的子查询
SELECT * FROM table WHERE colName IN (子查询);
- IN关键字进行子查询时,内层查询语句仅仅返回一个数据列,这个数据列里的值将提供给外层查询语句进行比较操作
- NOT IN 正好与 IN 的作用相反
带关键字[NOT] EXISTS的子查询
SELECT * FROM table WHERE EXISTS (子查询);
- 判断子查询是否返回行
- 如果返回,那么EXISTS的结果为True
- 如果没有返回任何行,那么EXISTS返回的结果为False
插入记录时使用子查询
INSERT … SELECT
- INSERT INTO SELECT语句从一个表复制数据,然后把数据插入到一个已存在的表中
- 也就是通过子查询将查询结果写入到另一个数据表中
INSERT INTO table2 SELECT * FROM table1;