加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

MS-SQL的子查询表达式

发布时间:2018-09-01 11:54:45 所属栏目:电商 来源:站长网
导读:1.EXISTS EXISTS ( subquery ) EXISTS 的参数是一个恣意的SELECT语句, 可能说子查询。体系对子查询举办运算以判定它是否返回行。 假如它至少返回一行,那么 EXISTS 的功效就为"真"; 假如子查询没有返回行,那么 EXISTS 的功效是"假"。 子查询可以引用来
    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。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读