Hike News
Hike News

磨刀霍霍:聊聊SQL子查询关键字

SQL 子查询关键字

子查询

where 子句中允许出现查询语句,称为子查询

单行子查询

返回一行数据的子查询语句

-- 原来需要两条查询的语句
-- 查出小 A 的值
select value from table where name = 'A' --假设结果为10
-- 查出比小 A 值更高的亲故
select name from table where value > 10

-- 利用子查询合并为一句
select name from table where value > (select value from table where name = 'A')

多行子查询

返回多行数据的子查询语句

any

表示任意一个
<>any 表示不等于其中任何一个即成立
子查询不返回结果时,为 false
结果值有 null 时,null 不参与比较

-- 查出任意一个比小 A 值更高的亲故
select name from table where value > any (select value from table where name = 'A')

all

表示所有
>all 表示要大于所有子查询出的结果
子查询不返回结果时,为 true
结果值有 null 时,不返回数据

in

表示值是否存在子查询结果
=any
子查询不返回结果时,为 false
结果值有 null 时,null 不参与比较

not in

<>all

exist

表示子查询是否返回结果,而不管返回的具体内容

参考资料