关于子查询all,any,some,比较符的用法及理解

--例值
--table_1:(null,1,2,3,4)
--table_6:(null,2,3)

select *from Table_1 where ID >all (select ID from table_6)
--这句是table_1中的ok列中全部要大于table_6列的ok值有哪列、如果子查询或父查询的列中有null值、那就不返回值
--父查询中的值必须有一个要大于子查询中的所有值才会返回那个大的值、不然也不返回值
--如果没有null值、那就只有返回4这个最大的一行

select *from Table_1 where ID >any (select ID from table_4)
--any是返回部分值、上句就是父查询大于子查询的值、只要父查询其中有一个值大于子查询其中任何一个值、就可以返回
--4比3大、3比2大、所以返回2行、有null值的列都不会返回
--就不像all必须大于所有子查询的值、才会返回那一个大的

select *from Table_1 where ID >some (select ID from table_4)
--some与any是一样的、查询结果都是一样的返回2行、可以代替any

select *from Table_1 where ID=any (select ID from table_4)
select *from Table_1 where ID in  (select ID from table_4)
--等于any跟in子查询、结果null,2,3是一样的这三行、in就像等于号、 这回null也会返回、因为值是一样的

select *from Table_1 where ID<>any (select ID from table_4)
select *from Table_1 where ID not in  (select ID from table_4)
--不等于any、返回结果是null,1,2,3,4、只要子查询中有一个不等父查询的值、那么父查询就会返回与子查询不同的那个值
--not in返回结果是1,4、也就是有相同的值是不返回的、只返回不同的值
--<>不等于对比、比如null要先跟子查询的null,2,3对一遍了、才到1跟子查询的null,2,3再对一遍、2,3,4也一样
--如果子查询中只有一个3值的话、那么返回的结果就是null,1,2,4了、并不是说只要有一个不相同就返回父查询的所有值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水亦流人必上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值