SQL查询语句中,any和all有什么区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL查询语句中,any和all有什么区别?相关的知识,希望对你有一定的参考价值。

any要求你的结果等于任何一个就可以了。
all是所有的

例:
从销货表中挑出订单金额大于“E0013这位业务员在1996/11/10这天所接的任一张订单的金额”的所有订单,并显示相关字段信息
select sale_id, tot_amt
from sales
where tot_amt > any
(select tot_amt from sales
where sale_id=‘e0013‘
and order _date=‘1996/11/10‘)


把ANY换成ALL时,语句表示的意思就是订单金额大于“E0013这位业务员在1996/11/10这天所接的每一张订单的金额”的所有订单

 

另一个实例:

create table #A(id int)
go
insert into #A values(1)
insert into #A values(2)
insert into #A values(3)
insert into #A values(4)
go

--All:对所有数据都满足条件,整个条件才成立,例如:5大于所有返回的id
select *
from #A
where 5>All(select id from #A)
go

--Any:只要有一条数据满足条件,整个条件成立,例如:3大于1,2
select *
from #A
where 3>any(select id from #A)
go
--Some和Any一样 

备注:Any的用法中,在作数字比对时,也可以改用先select subquery的min/max value的方法,某些情况下效率更高

以上是关于SQL查询语句中,any和all有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

sql中any和all的区别?

MySQLmysql中any,in,some,all的区别

SQL中 ALL 和 ANY 区别的

使用 EXISTS、ALL、ANY 的 SQL 语句出现问题

SQL中的ALL,ANY,SOME的用法

mysql 数据操作 子查询 介绍