使用子查询返回的数据将被用在主查询中作为条件,以进一步限制要检索的数据。

子查询可以与 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 中正确识别中文字符。