SQLite 子查询
子查询,又称为内部查询 或 嵌套查询,是在一个 SQLite 语句中的 WHERE
子句中嵌入另一个 SQL 查询语句
子查询 返回的数据可以被用在主查询中作为条件,以进一步限制要检索的数据
子查询的语法格式一般如下
[COMMAND] FROM tablename WHERE fieldname [op] ([sub query])
[COMMAND]
可以是SELECT
、INSERT
、UPDATE
和DELETE
[op]
可以是运算符=、<、>、>=、<=、IN
等[sub query]
就是一个子查询
例如下面的查询语句包含了一个子查询
SELECT * FROM tbl_employee WHERE id IN ( SELECT id FROM tbl_employee WHERE salary > 50000 );
这条语句的意思是先查询出 salary
大于 50000
的职工的 id
作为条件,筛选出这些人的所有信息
看起来比较简单,所以完全可以使用下面的语句代替
SELECT * FROM tbl_employee WHERE id > 50000;
但如果涉及到复杂的查询,最好的方法就是乖乖的使用子查询
子查询规则
使用子查询时必须遵循以下几个规则
-
子查询必须用括号括起来
-
子查询在 SELECT 子句中只能有一个列,除非在主查询中有多列,与子查询的所选列进行比较
-
ORDER BY
不能用在子查询中,虽然主查询可以使用ORDER BY
,但子查询中可以使用GROUP BY
-
如果子查询返回多于一行,则只能与多值运算符一起使用,如
IN
运算符 -
BETWEEN
运算符不能与子查询一起使用,但是,BETWEEN
可在子查询内使用
范例
子查询可以用在 SELECT
、INSERT
、UPDATE
和 DELETE
语句中