Home > Database > Mysql Tutorial > sqlserver中All、Any和Some用法与区别

sqlserver中All、Any和Some用法与区别

WBOY
Release: 2016-06-07 15:40:19
Original
3326 people have browsed it

SQLServer 中有三个关键字可以修改比较运算符: All 、 Any 和 Some ,其中 Some 和 Any 等价。 他们作用于比较运算符和子查询之间,作用类 Exists 、 not exists 、 in 、 not in 以及其他逻辑意义,这些语法同样被 SQLServer2000 支持但是很少看到有人用它

SQLServer中有三个关键字可以修改比较运算符:AllAnySome,其中SomeAny等价。 

他们作用于比较运算符和子查询之间,作用类似Existsnot existsinnot in以及其他逻辑意义,这些语法同样被SQLServer2000支持但是很少看到有人用它们。

 

官方参考文:http://technet.microsoft.com/zh-cn/library/ms187074%28SQL.90%29.aspx (建议阅读)

 

set nocount on
  
use tempdb
go
  
if (object_id ('t1') is not null)drop table t1
create table t1 (n int)
insert into t1 select 2 unionselect 3  
  
if (object_id ('t2') is not null)drop table t2
create table t2 (n int)
insert into t2 select 1 unionselect 2 union select 3 union select 4
  
-- t1表数据 2,3
-- t2表数据 1,2,3,4
-- '>all' 表示:t2表中列n的数据大于t1表中列n的数据的数,结果只有4.
select * from t2 where n > all(select n from t1 )    --4
select * from t2 where n > any(select n from t1 )    --3,4
select * from t2 where n > some(selectn from t1)      --3,4
  
select * from t2 where n = all(select n from t1 )    --无数据
select * from t2 where n = any(select n from t1 )    --2,3
select * from t2 where n = some(selectn from t1)      --2,3
  
select * from t2 where n all (select n from t1 )    --1,4
select * from t2 where n any (select n from t1 )    --1,2,3,4
select * from t2 where n some(select n from t1)      --1,2,3,4
set nocount off
Copy after login

 

注意:1. =any 与in 等效.
2. 如果t1中包含null数据,那么所有All相关的比较运算将不会返回任何结果。因为t1和t2表的null的存在他们和notexists之类的比较符会有一些区别
比如下面两句

select * from t2 a where not exists(select1 from t1 where n>=a.n) 

select * from t2 where  n > all(select n from t1) 
Copy after login


他们逻辑上意义很像但是对于null的处理却是恰恰相反,第一句会忽略子查询的null而把t2的null同时查出来,第二句却是忽略了t2的null同时会因为t1中的null而无法查询到数据。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template