子查询:
子查询指一个查询语句嵌套在另一个查询语句内部的查询
创建两张测试表
create table tb1(number1 int not NULL);
create table tb2(number2 int not NULL);
INSERT into tb1 VALUES(1),(2),(13),(56);
INSERT into tb2 VALUES(4),(78),(137),(586);
1.带any,some 关键字的子查询
,any 和some用法相同 表示满足其中任一条件,它们允许创建一个表达式对子查询的返回结果进行比较,只要满足内层子查询中任何一个比较条件,就返回一个结果作为外层查询的条件,
查询tb1的number1大于 tb2 的number2 的任一一个数的集合
select number1 from tb1 where number1 > any (select number2 from tb2)
结果为
2.带all关键字的子查询
查询number1大于number2的数
select number1 from tb1 where number1 > all (select number2 from tb2)
3.带exits关键字的子查询
查询number1 是否有number2 = 4这个值
select * from tb1 where EXISTS(select number2 from tb2 where number2 = 4)
如果有返回所有记录
exits还可以和条件表达式一起使用
select * from tb1 where number1 >4 and EXISTS(select number2 from tb2 where number2 = 56)
not exits 于exits 使用方法相同 ,返回结果相反
4.带in关键字的子查询
查询number1的数 在number2中是否也有
select * from tb1 where number1 in (select number2 from tb2 where number2)
select 语句中可以使用not in 于in 相反