• SQLSERVER数据集合的交、并、差集运算(intersect,union,except)


    SQLServer中通过intersect,union,except和三个关键字对应交、并、差三种集合运算。

    他们的对应关系可以参考下面图示

    新建两个表进行测试:
    test_a

    IDname
    1 曹操
    2 郭嘉
    3 孙权
    4 周瑜

    test_b

    IDname
    1 刘备
    2 关羽
    3 张飞
    4 孙权
    5 周瑜

    1.UNION形成并集

      UNION可以对两个或多个结果集进行连接,形成“并集”。
      子结果集所有的记录组合在一起形成新的结果集。

    1、限定条件

      要是用UNION来连接结果集,有4个限定条件。
      (1)、子结果集要具有相同的结构。
      (2)、字结果集的列数必须相同。
      (3)、子结果集对应的数据类型必须可以兼容。
      (4)、每个子结果集不能包含order by和compute子句。

    2、语法形式
    SELECT column_name(s) FROM table1
    UNION
    SELECT column_name(s) FROM table2;
    3.示例:

      无重复记录:
    Union形成并集-无重复记录
      

      有重复记录:
    Union形成并集-重复记录

    2.EXCEPT形成差集

      EXCEPT可以对两个或多个结果集进行连接,形成“差集”。
      返回左边结果集合中已经有的记录,而右边结果集中没有的记录。

    1、限定条件

      要是用EXCEPT来连接结果集,有4个限定条件。
      (1)、子结果集要具有相同的结构。
      (2)、字结果集的列数必须相同。
      (3)、子结果集对应的数据类型必须可以兼容。
      (4)、每个子结果集不能包含order by和compute子句。

    2、语法形式
    SELECT column_name(s) FROM table1
    EXCEPT
    SELECT column_name(s) FROM table2;

      博主的MySQL版本不支持EXCEPT,暂用NOT IN展示结果。
    NOT IN

    3.INNER JOIN形成交集

      INNER JOIN可以对两个或多个结果集进行连接,形成“交集”。
      返回左边结果集和右边结果集中都有的记录。

    1、限定条件

      要是用INNER JOIN来连接结果集,有4个限定条件。
      (1)、子结果集要具有相同的结构。
      (2)、字结果集的列数必须相同。
      (3)、子结果集对应的数据类型必须可以兼容。
      (4)、每个子结果集不能包含order by和compute子句。

    2、语法形式
    SELECT column_name(s) FROM table1
    INNER JOIN table2
    ON table2.column_name(s) = table1.column_name(s);

    SELECT column_name(s) FROM table1
    JOIN table2
    ON table2.column_name(s) = table1.column_name(s);

    INNER JOIN

  • 相关阅读:
    值得学习的东西
    【单调队列】转载
    dom基础3 — 简易版template.js
    js基础6 — 数组对象
    js基础6 — 字符串基本操作
    js基础5 — 将十六进制颜色转为rgba()
    js基础4 — 数组操作
    placeholer属性修改
    clipboard.js实现复制到剪切板
    JS 获取指定日期在当年的第几周
  • 原文地址:https://www.cnblogs.com/HuairongChen/p/13613996.html
Copyright © 2020-2023  润新知