2022年MS-SQL子查询语句集 2.pdf
《2022年MS-SQL子查询语句集 2.pdf》由会员分享,可在线阅读,更多相关《2022年MS-SQL子查询语句集 2.pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、MS-SQL 子查询语句集1.EXISTS EXISTS ( subquery ) EXISTS 的参数是一个任意的SELECT 语句, 或者说子查询。系统对子查询进行运算以判断它是否返回行。如果它至少返回一行,那么 EXISTS 的结果就为 真; 如果子查询没有返回行,那么 EXISTS 的结果是 假 。子查询可以引用来自周围的查询的变量,这些变量在该子查询的任何一次计算中都起常量的作用。这个子查询通常只是运行到能判断它是否可以生成至少一行为止,而不是等到全部结束。在这里写任何有副作用的子查询都是不明智的(比如调用序列函数) ;这些副作用是否发生是很难判断的。因 为结果只取决于是否会返回行,
2、而不取决于这些行的内容,所以这个子查询的输出列表通常是无关紧要的。一个常用的编码习惯是用下面的形式写所有的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 的这
3、种形式的右手边是一个圆括弧括起来的子查询,它必须只返回一个字段。左手边表达式对子查询的结果的每一行进行一次计算和比较。如果找到任何等于子查询行的情况,那么 IN 的结果就是 真 。如果没有找到相等行,那么结果是 假(包括子查询没有返回任何行的特殊例子)。请注意如果左手边表达式生成 NULL,或者没有相等的右手边数值,并且至少有一个右手边行生成 NULL,那么 IN 构造的结果将是 NULL,而不是假。这个行为是遵照 SQL 处理布尔和 NULL 值组合时的规则定的。和 EXISTS 一样,假设子查询将被完成运行完全是不明智的。 row_constructor 名师资料总结 - - -精品资料欢
4、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - IN (subquery) 这种形式的 IN 的左手边是一个行构造器,右手边是一个圆括弧括起来的子查询,它必须返回和左手边返回的行中表达式所构成的完全一样多的字段。左手边表达式就子查询结果的每一行进行计算很比较。如果找到任意相等的子查询行,则 IN 的结果为 真 。如果没有找到相等行,那么结果为假(包括子查询不返回行的特殊例子)。 通常,表达式或者子查询行里的 NULL 是按照 SQL 布尔表达式的一般规则进行组合
5、的。如果两个行对应的成员都是非空并且相等,那么认为这两行相等;如果任意对应成员为非空且不等,那么该两行不等;否则这样的行比较的结果是未知(NULL )。如果所有行的结果要么是不等,要么是 NULL,并且至少有一个 NULL,那么 IN 的结果是 NULL。3.NOT IN expression NOT IN (subquery) 右 手边是一个用圆括弧包围的子查询,它必须返回一个字段。左手边表达式就子查询结果的每一行进行计算和比较。如果只找到不相等的子查询行(包括子查询不返回行的特殊情况),那么NOT IN 的结果是 真。 如果找到任何相等行,则结果为 假 。请注意如果左手边表达式返回空,或者
6、如果没有等于右手边的值,并且至少一个右手边行生成空,那么 NOT IN 构造的结果将是空,而不是真。这是根据 SQL 对布尔和空值组合的一般规则制定的。和 EXISTS 一样,假设子查询会完全结束是不明智的。 row_constructor NOT IN (subquery)NOT IN 的这种形式左手边是一个行构造器,其右手边是一个圆括弧括起来的子查询,它必须返回和左手边表达式返回的行一样多的字段。左手边表达式对子查询的结果的每一行进行一次计算和比较。如果只出现不等于子查询行的情况,那么 NOT IN 的结果就是 真 。(包括子查询没有返回任何行的特殊例子)。如果找到相等行,那么结果是假。和
7、通常一样,表达式或者子查询行里的 NULL 是按照 SQL 布尔表达式的一般规则进行组合的。如果两个行对应的成员都是非空并且相等,那么认为这两行相等;如果任意对应成员为非空且不等,那么该两行不等;否则这样的行比较的结果是未知 (NULL)。如果所有行的结果要么是不等,要么是 NULL,并且至少有一个 NULL,那么 NOT IN 的结果是 NULL。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 4.ANY/SOMEexpres
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年MS-SQL子查询语句集 2022 MS SQL 查询 语句
限制150内