使用子查询返回的数据将被用在主查询中作为条件,以进一步限制要检索的数据。
子查询可以与 SELECT、INSERT、UPDATE 和 DELETE 语句一起使用,可伴随着使用运算符如 =、<、>、>=、<=、IN、BETWEEN 等。
以下是子查询必须遵循的几个规则:
-
子查询必须用括号括起来。
-
子查询在 SELECT 子句中只能有一个列,除非在主查询中有多列,与子查询的所选列进行比较。
-
ORDER BY 不能用在子查询中,虽然主查询可以使用 ORDER BY。可以在子查询中使用 GROUP BY,功能与 ORDER BY 相同。
-
子查询返回多于一行,只能与多值运算符一起使用,如 IN 运算符。
-
BETWEEN 运算符不能与子查询一起使用,但是,BETWEEN 可在子查询内使用。
SELECT 语句中的子查询使用
子查询通常与 SELECT 语句一起使用。基本语法如下:
SELECT column_name [, column_name ]
FROM table1 [, table2 ]
WHERE column_name OPERATOR
(SELECT column_name [, column_name ]
FROM table1 [, table2 ]
[WHERE])
假设 COMPANY 表有以下记录:
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
现在,让我们检查 SELECT 语句中的子查询使用:
sqlite> SELECT *
FROM COMPANY
WHERE ID IN (SELECT ID
FROM COMPANY
WHERE SALARY > 45000) ;
这将产生以下结果:
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
INSERT 语句中的子查询使用
子查询也可以与 INSERT 语句一起使用。INSERT 语句使用子查询返回的数据插入到另一个表中。在子查询中所选择的数据可以用任何字符、日期或数字函数修改。
基本语法如下:
INSERT INTO table_name [ (column1 [, column2 ]) ]
SELECT [ *|column1 [, column2 ]
FROM table1 [, table2 ]
[ WHERE VALUE OPERATOR ]
子查询或内部查询或嵌套查询是在另一个 SQLite 查询内嵌入在 WHERE 子句中的查询。使用子查询返回的数据将被用在主查询中作为条件,以进一步限制要检索的数据。子查询可以与 SELECT、INSERT、UPDATE 和 DELETE 语句一起使用,可伴随着使用运算符如 =、、>=、以下是子查询必须遵循的几个规则:子查询必须用括号括起来。子
1,
子查询
:sql中嵌套select语句,可以在where和from中,作为一个临时表,也可以在select中作为一个字段返回。使用()
2,单行
子查询
:=,>,=,
3,多行
子查询
:in,any,all
4,可以通过使用
子查询
来避免使用事务,并且达到事务的目的(大量数据的操作)
在SQL中我们可以使用in、exists语句来判断对象是否存在某个
子查询
中,在pg中除了支持这两种语法,还支持= any的语法,例如下面三个SQL的意思就是一样的:
select * from tbl where id in (select id from t);
select * from tbl where exists (select 1 from t where t.id=tbl...
SQLite
中文查询指的是使用 SQL 语言在
SQLite
数据库中查询数据时,使用中文作为查询条件或查询结果的过程。
如果你的数据库中的字段是中文字符串,那么在查询语句中使用中文字符串作为查询条件是可行的。比如,如果你有一个表格名为 "students",其中有一个字段名为 "name",你可以使用以下语句查询名为 "张三" 的学生的信息:
SELECT * FROM students WHERE name = '张三';
注意:
SQLite
不支持 UTF-8 编码,所以需要将查询语句和数据库中的字段编码为 UTF-16 或 UTF-8 以外的其他编码,才能在
SQLite
中正确识别中文字符。