被遗忘的SQLServer比较运算符谓词
SQLServer中有三个关键字可以修改比较运算符:All、Any和Some,其中Some和Any等价。
官方的参考文档
http://technet.microsoft.com/zh-cn/library/ms187074%28SQL.90%29.aspx
他们作用于比较运算符和子查询之间,作用类似Exists、not exists、in、not in以及其他逻辑意义,这些语法同样被SQLServer2000支持但是很少看到有人用它们。
set nocount onuse tempdbgoif (object_id ('t1' ) is not null ) drop table t1create table t1 (n int )insert into t1 select 2 union select 3 if (object_id ('t2' ) is not null ) drop table t2create table t2 (n int )insert into t2 select 1 union select 2 union select 3 union select 4select * from t2 where n> all (select n from t1 ) --4select * from t2 where n> any (select n from t1 ) --3,4--select * from t2 where n>some(select n from t1) --3,4select * 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(select n from t1) --2,3select * from t2 where n< all (select n from t1 ) --1select * from t2 where n< any (select n from t1 ) --1,2--select * from t2 where n<some(select n from t1) --1,2select * from t2 where n<> all (select n from t1 ) --1,4select * 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,4set nocount off
[解决办法]
好啊好啊,,,有份给么???
[解决办法]
set nocount onuse tempdbgoif (object_id ('t1' ) is not null ) drop table t1create table t1 (n int )insert into t1 select 2 union select 3 go 1000 if (object_id ('t2' ) is not null ) drop table t2create table t2 (n int )insert into t2 select 1 union select 2 union select 3 union select 4go 1000CREATE INDEX COL_T1_N ON T1(N)CREATE INDEX COL_T2_N ON T2(N)set statistics time onselect * from t2 where n> all (select n from t1 ) --4SELECT * FROM T2 WHERE NOT EXISTS(SELECT 1 FROM T1 WHERE T1.N>=T2.N)select * from t2 where n> any (select n from t1 ) --3,4SELECT * FROM T2 WHERE EXISTS(SELECT 1 FROM T1 WHERE T2.N>T1.N)--select * from t2 where n>some(select n from t1) --3,4
[解决办法]
都是高人啊 ,俺也来学习下
[解决办法]
学习了,没用过
[解决办法]
学习
[解决办法]
复习下
[解决办法]
学习了 …………………………………………………………
[解决办法]
学习
[解决办法]
向你学习
[解决办法]
多学习
[解决办法]
.
[解决办法]
mark
[解决办法]
tutyjj
[解决办法]
书上有看到了,呵呵
[解决办法]
确实很少乃至.
以至我第一次听说 .
[解决办法]
学习
[解决办法]
mark
[解决办法]
学习
[解决办法]
只在书上看到有
很少用
[解决办法]
个别用法在实际开发中较少用到
[解决办法]
这几个谓词都比较绕
[解决办法]
第一次看到,我的基本国外的SQL书里怎么也没介绍过呢?
[解决办法]
顶了再说
[解决办法]
钉下,, 看看有没有积分
[解决办法]
这个可以有
这个真的没有
[解决办法]
顶 !
[解决办法]
只在书上看到有
很少用
[解决办法]
mark.
------解决方案--------------------
[解决办法]
学习
[解决办法]
楼主好人,学习了
[解决办法]
谢谢楼主 学习了
[解决办法]
用力顶JJ
[解决办法]
学习
[解决办法]
学习
[解决办法]
学习了
[解决办法]
被遗忘是因为没有生命力还是因为我们水平没有达到?
[解决办法]
en 。。学习.
[解决办法]
没用过,打个标记。
[解决办法]
确实用得少
[解决办法]
呃,这个学过。出来后还真没看见多少人用。
像这么查询的速度有点问题,印象中。
any all 都需要遍历数据库,假如数据库大了?那么速度会怎样。
[解决办法]
嗯,我也是基本上没用过
[解决办法]