赞
踩
子查询是指在一个SELECT
语句中嵌套另一个SELECT
语句
如下图片所示:
一个子查询会返回一个标量(单一值)、一个行、一个列或一个表(一行或多行,一列或多列),这些子查询被称为标量、列、行和表子查询
子查询的限制是其外部语句必须是以下语句之一:SELECT
、 INSERT
、 UPDATE
、 DELETE
、 SET
或DO
。还有一个限制是,目前用户不能既在一个子查询中修改一个表,又在同一个表中进行选择
comparison operator
可以是=
, >
, <
, >=
, <=
, <>
如下的例子,查询payment最高的customer:
SELECT
customerNumber, checkNumber, amount
FROM
payments
WHERE
amount = (SELECT
MAX(amount)
FROM
payments);
如果子查询返回的是多个值,可在WHERE
中使用IN
和NOT IN
如下的例子,查询没有order
的customers
SELECT
customerName
FROM
customers
WHERE
customerNumber NOT IN (SELECT DISTINCT
customerNumber
FROM
orders);
可分为独立子查询和相关子查询
当子查询与EXISTS或NOT EXISTS运算符一起使用时,子查询返回一个布尔值为TRUE或FALSE的值。以下查询说明了与EXISTS运算符一起使用的子查询:
SELECT
*
FROM
table_name
WHERE
EXISTS( subquery );
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。