集合

作者: 践行数据分析 | 来源:发表于2021-06-19 16:57 被阅读0次

    1 集合的定义

    集合是由一个和多个元素构成的整体,在 SQL Server 中的就代表着事实集合,

    而其中的查询就是在集合的基础上生成的结果集。SQL Server 的集合包括交集

    (INTERSECT),并集(UNION),差集( EXCEPT )。

    2 交集 INTERSECT

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

    都有的记录,且结果不重复(这也是集合的主要特性)

    交集限制条件

    • 子结果集要具有相同的结构。

    • 子结果集的列数必须相同

    • 子结果集对应的数据类型必须可以兼容。

    • 每个子结果集不能包含 order by 和 compute 子句。

    3 并集 UNION

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

    形成新的结果集。其中使用 UNION 可以得到不重复(去重)的结果集,使用

    UNION ALL 可能会得到重复(不去重)的结果集。

    并集限制条件

    • 子结果集要具有相同的结构。

    • 子结果集的列数必须相同

    • 子结果集对应的数据类型必须可以兼容。

    • 每个子结果集不能包含 order by 和 compute 子句。

    UNION 示例

    还是以上面的 City1 和 City2 为例,取两个表的并集,我们可以这样写 SQL:

    SELECT * FROM City1

    UNION

    SELECT * FROM City2

    结果如下:

    我们看到,北京和上海去掉了重复的记录,只保留了一次

    UNION ALL 示例

    我们再看看使用 UNION ALL 会怎么样?

    SELECT * FROM City1

    UNION ALL

    SELECT * FROM City2

    结果如下:

    与上面的 UNION 相比,UNION ALL 仅仅是对两个表作了拼接而已,北京和上海

    依然在下面重复出现了,而且细心的读着应该发现了,UNION 还会对结果进行排

    序,而 UNION ALL 不会。

    4 差集 EXCEPT

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

    录,而右边结果集中没有的记录。

    差集限制条件

    • 子结果集要具有相同的结构。

    • 子结果集的列数必须相同

    • 子结果集对应的数据类型必须可以兼容。

    • 每个子结果集不能包含 order by 和 compute 子句。

    差集示例

    以 City1 和 City2 为例,我们想取 City1(左表)和 City2(右表)的差集,可以

    这样写 SQL:

    SELECT * FROM City1

    EXCEPT

    SELECT * FROM City2

    结果如下:

    我们看到,因为北京和上海在两个表都存在,差集为了只显示左表中有的,而右表

    中没有的,就把这两个给过滤掉了。

    相关文章

      网友评论

        本文标题:集合

        本文链接:https://www.haomeiwen.com/subject/stocyltx.html