zoukankan      html  css  js  c++  java
  • sql中关联查询

    EXCEPT 返回两个结果集的差(即从左查询中返回右查询没有找到的所有非重复值)。

    INTERSECT 返回 两个结果集的交集(即两个查询都返回的所有非重复值)。

    UNION返回两个结果集的并集。

    UNION,EXCEPT, INTERSECT关键字用于对集合的查询,它们的作用分别为:
    UNION:合并两个或多个SELECT语句的结果集,并把重复结果去除;
    UNIONALL:合并两个或多个SELECT语句的结果集,不去除重复结果;
    EXCEPT:查询包含在A语句的结果集中但不包含在B语句的结果集中的结果;
    语法:

    { (<SQL-查询语句1>) }
    { EXCEPT | INTERSECT }
    { (<SQL-查询语句2> )}

    限制条件

    • (1)所有查询中的列数和列的顺序必须相同。
    • (2)比较的两个查询结果集中的列数据类型可以不同但必须兼容。
    • (3)比较的两个查询结果集中不能包含不可比较的数据类型(xml、text、ntext、image 或非二进制 CLR 用户定义类型)的列。
    • (4)返回的结果集的列名与操作数左侧的查询返回的列名相同。ORDER BY 子句中的列名或别名必须引用左侧查询返回的列名。
    • (5)不能与 COMPUTE 和 COMPUTE BY 子句一起使用。
    • (6)通过比较行来确定非重复值时,两个 NULL 值被视为相等。(EXCEPT 或 INTERSECT 返回的结果集中的任何列的为空性与操作数左侧的查询返回的对应列的为空性相同。)

    与表达式中的其他运算符一起使用时的执行顺序

    1. 1、括号中的表达式
    2. 2、INTERSECT 操作数
    3. 3、基于在表达式中的位置从左到右求值的 EXCEPT 和 UNION

    如果 EXCEPT 或 INTERSECT 用于比较两个以上的查询集,则数据类型转换是通过一次比较两个查询来确定的,并遵循前面提到的表达式求值规则。

    举例:

    tableA tableB

    NULL NULL
    NULL
    :(SELECT * FROM TableA) EXCEPT (SELECT * FROM TableB)
    结果: 1
    (1 row(s) affected)
    B: SELECT * FROM TableA INTERSECT SELECT * FROM TableB
    结果:2
       3
       4
       5
        (4 row(s) affected)
  • 相关阅读:
    085 Maximal Rectangle 最大矩形
    084 Largest Rectangle in Histogram 柱状图中最大的矩形
    083 Remove Duplicates from Sorted List 有序链表中删除重复的结点
    082 Remove Duplicates from Sorted List II 有序的链表删除重复的结点 II
    081 Search in Rotated Sorted Array II 搜索旋转排序数组 ||
    080 Remove Duplicates from Sorted Array II 从排序阵列中删除重复 II
    079 Word Search 单词搜索
    078 Subsets 子集
    bzoj2326: [HNOI2011]数学作业
    bzoj2152: 聪聪可可
  • 原文地址:https://www.cnblogs.com/future-wy/p/10609420.html
Copyright © 2011-2022 走看看