All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
了解ASP2.0向其它网页传递信息的方法_.net资料_编程技术
推荐:动态网页PHP函数速查大全汇总_php资料_编程技术
Visual,Studio2005发布问题解决办法_[Asp.Net教程]
详细学习动态网页制作PHP技术的正则表达式_[PHP教程]
Visual,Studio,2005集成开发环境图解(二)_[Asp.Net教程]
ajax+asp.net2.0,sql2005三级联下拉框_[Asp.Net教程]
PHP实例程序:实现给上传图片加水印图案的做法_[PHP教程]
AJAX在PHP中的简单使用_[PHP教程]
在asp.net,页面中加入skype功能_.net资料_编程技术
PHP利用cookie做的投票程序_[PHP教程]
Reading number is top 10 pictures
2012 national geographic daily picture3
Perfect small Laurie2
Seductive beauty of crime2
Sora aoi mirror memorial classics5
Household design comfortable contracted
Plump, too plump!2
The money of more than 100 countries and regions19
So beauty, will let you spray blood9
Born After 90 Beijing sports university campus flower photos3
八个盛产美女的国家2
Download software ranking
WebService在.NET中的实战应用教学视频 → 第1集
Unix video tutorial20
Unix video tutorial8
jdk1.5
Tram sex maniac 2 (H) rar bag4
传奇私服架设教程-chm
The cock of the Grosvenor LTD handsome
Boxer's Top ten classic battle5
美女写真2
Tram sex maniac 2 (H) rar bag16
归海一刀 published in(发表于) 2014/2/1 0:09:26 Edit(编辑)
MS-SQL的子查询表达式_[SQL,Server教程]

MS-SQL的子查询表达式_[SQL,Server教程]

MS-SQL的子查询表达式_[SQL Server教程]

1.EXISTS EXISTS ( subquery )

EXISTS 的参数是一个任意的SELECT语句, 或者说子查询。系统对子查询进行运算以判断它是否返回行。 如果它至少返回一行,那么 EXISTS 的结果就为"真"; 如果子查询没有返回行,那么 EXISTS 的结果是"假"。


  子查询可以引用来自周围的查询的变量,这些变量在该子查询的任何一次计算中都起常量的作用。


  这个子查询通常只是运行到能判断它是否可以生成至少一行为止, 而不是等到全部结束。在这里写任何有副作用的子查询都是不明智的(比如调用序列函数);这些副作用是否发生是很难判断的。


  因为结果只取决于是否会返回行,而不取决于这些行的内容, 所以这个子查询的输出列表通常是无关紧要的。一个常用的编码习惯是用下面的形式写所有的EXISTS测试 EXISTS(SELECT 1 WHERE ...)。不过这条规则有例外, 比如那些使用 INTERSECT 的子查询。


  下面这个简单的例子类似在col2上的一次内联接,但是它为每个 tab1的行生成最多一个输出,即使存在多个匹配tab2的行也如此∶


SELECT col1 from tab1
WHERE EXISTS(SELECT 1 from tab2 WHERE col2 = tab1.col2);


  2.IN expression IN (subquery)


IN 的这种形式的右手边是一个圆括弧括起来的子查询, 它必须只返回一个字段。左手边表达式对子查询的结果的每一行进行一次计算和比较。 如果找到任何等于子查询行的情况,那么 IN 的结果就是"真"。 如果没有找到相等行,那么结果是"假"(包括子查询没有返回任何行的特殊例子)。


请注意如果左手边表达式生成 NULL,或者没有相等的右手边数值, 并且至少有一个右手边行生成 NULL,那么 IN 构造的结果将是 NULL,而不是假。 这个行为是遵照 SQL 处理布尔和 NULL 值组合时的规则定的。


和 EXISTS 一样,假设子查询将被完成运行完全是不明智的。 row_constructor IN (subquery) 这种形式的 IN 的左手边是一个行构造器,右手边是一个圆括弧括起来的子查询,它必须返回和左手边返回的行中表达式所构成的完全一样多的字段。 左手边表达式就子查询结果的每一行进行计算很比较。如果找到任意相等的子查询行,则 IN 的结果为"真"。如果没有找到相等行, 那么结果为"假"(包括子查询不返回行的特殊例子)。 通常,表达式或者子查询行里的 NULL 是按照 SQL 布尔表达式的一般规则进行组合的。 如果两个行对应的成员都是非空并且相等,那么认为这两行相等;如果任意对应成员为非空且不等,那么该两行不等; 否则这样的行比较的结果是未知(NULL)。如果所有行的结果要么是不等, 要么是 NULL,并且至少有一个 NULL,那么 IN 的结果是 NULL。


  3.NOT IN expression NOT IN (subquery)


右手边是一个用圆括弧包围的子查询,它必须返回一个字段。左手边表达式就子查询结果的每一行进行计算和比较。如果只找到不相等的子查询行(包括子查询不返回行的特殊情况),那么NOT IN 的结果是"真"。 如果找到任何相等行,则结果为"假"。 请注意如果左手边表达式返回空,或者如果没有等于右手边的值,并且至少一个右手边行生成空, 那么 NOT IN 构造的结果将是空,而不是真。这是根据 SQL 对布尔和空值组合的一般规则制定的。


和 EXISTS 一样,假设子查询会完全结束是不明智的。 row_constructor NOT IN (subquery)NOT IN 的这种形式左手边是一个行构造器,其右手边是一个圆括弧括起来的子查询, 它必须返回和左手边表达式返回的行一样多的字段。 左手边表达式对子查询的结果的每一行进行一次计算和比较。 如果只出现不等于子查询行的情况,那么 NOT IN 的结果就是"真"。 (包括子查询没有返回任何行的特殊例子)。如果找到相等行,那么结果是"假"。


和通常一样,表达式或者子查询行里的 NULL 是按照 SQL 布尔表达式的一般规则进行组合的。 如果两个行对应的成员都是非空并且相等,那么认为这两行相等;如果任意对应成员为非空且不等,那么该两行不等; 否则这样的行比较的结果是未知(NULL)。如果所有行的结果要么是不等, 要么是 NULL,并且至少有一个 NULL,那么 NOT IN 的结果是 NULL。


  4.ANY/SOMEexpression operator ANY (subquery)


  expression operator SOME (subquery)


这种形式的 ANY 右手边是一个圆括弧括起来的子查询, 它必须返回一个字段。左手边表达式将使用给出的 operator对子查询的结果的每一行进行一次计算和比较。目前如果获得任何真值结果,那么 ANY 的结果就是"真"。 如果没有找到真值结果,那么结果是"假"(包括子查询没有返回任何行的特殊例子)。 SOME 是 ANY 的同意词。 IN 等效于 = ANY。


请注意如果没有任何成功并且至少有一个右手边行为该操作符结果生成 NULL, 那么 ANY 构造的结果将是NULL,而不是 FALSE。 这个行为是遵照 SQL 处理布尔和 NULL 值组合时的规则定的。


和 EXISTS 一样,假设子查询将被完成运行完全是不明智的。 row_constructor operator ANY (subquery)


  row_constructor operator SOME (subquery)


这种形式的左手边是一个行构造器,右手边是一个圆括弧括起来的子查询, 它必须返回和左手边列表给出的表达式一样多的列。左手边表达式将使用给出的 operator对子查询的结果的每一行进行一次计算和比较。 目前,系统只允许使用 = 或 <> 操作符处理逐行的 ANY 构造。 如果分别找到相等或者不相等的行,那么 ANY 的结果就是 "真"。如果没有找到这样的行,那么结果是"假"(包括子查询没有返回任何行的特殊例子)。


通常,表达式或者子查询行里的 NULL 是按照 SQL 布尔表达式的一般规则进行组合的。 如果两个行对应的成员都是非空并且相等,那么认为这两行相等;如果任意对应成员为非空且不等,那么该两行不等; 否则这样的行比较的结果是未知(NULL)。如果至少有一个 NULL 行结果, 那么 ANY 的结果将是TRUE 或者 NULL。


   5.ALL expression operator ALL(subquery)


ALL 的这种形式的右手边是一个圆括弧括起来的子查询, 它必须只返回一列。左手边表达式将使用给出的 operator对子查询的结果的每一行进行一次计算和比较。该操作符必须生成布尔结果.如果所有行的结果都为"真",(包括子查询没有返回任何行的特殊例子)。 那么 ALL 的结果就是"真"。如果没有存在任何假值结果,那么结果是"假"。


NOT IN 等效于 <> ALL。


请注意如果没有运算失败但是至少有一个右手边行为该操作符的结果生成 NULL 值, 那么 ALL 构造的结果将是 NULL,而不是 TRUE。 这个行为是遵照 SQL 处理布尔和 NULL 值组合时的一般规则定的。


  和 EXISTS 一样,假设子查询将被完成运行完全是不明智的。


  row_constructor operator ALL (subquery)


  ALL 的这种形式的左手边是一个行构造器,右手边是一个圆括弧括起来的子查询,它必须返回和左手边行给出的表达式一样多的字段。 左手边表达式将使用给出的 operator对子查询的结果的每一行进行一次计算和比较。 目前系统只允许使用 = 和 <> 操作符处理逐行的 ALL 查询。 如果所有子查询都是相等或者不相等的行,那么 ALL 的结果就是"真"。(包括子查询没有返回任何行的特殊例子)。 如果分别有任何不相等或者相等的行,那么结果是"假"。


  通常,表达式或者子查询行里的 NULL 是按照 SQL 布尔表达式的一般规则 进行组合的。如果两个行对应的成员都是非空并且相等,那么认为这两行 相等;如果任意对应成员为非空且不等,那么该两行不等; 否则这样的行比较的结果是未知(NULL)。如果至少有一个 NULL 行结果, 那么 ALL 的结果就不可能是TRUE;它将会是 FALSE或者 NULL。







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.