zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    RabbitMQ安装(发生系统错误5。拒绝访问。发生系统错误1067。进程意外终止。)
    SQLServer执行脚本提示“系统找不到指定的文件”或“内存资源不足”
    TypeScript@HelloWorld!
    超详细Node安装教程
    进制转换
    菜鸟成长记
    ASP.NET Core中使用MialKit实现邮件发送
    VS未能正确加载 ”Microsoft.VisualStudio.Editor.Implementation.EditorPackate“包错误解决方法
    C#Winfrom Listview数据导入Excel
    安装研发服务器
  • 原文地址:https://www.cnblogs.com/HuairongChen/p/13613996.html
Copyright © 2011-2022 走看看