zoukankan      html  css  js  c++  java
  • PostgreSQLの交-并-差集(INTERSECT、UNION、EXCEPT)

    PostgreSQLの交-并-差集(INTERSECT、UNION/UNION ALL、EXCEPT)

    INTERSECT用于求交集,UNION/UNION ALL用于求并集,EXCEPT用于求差集。

    用法如下:

    query1 INTERSECT query2

    query1 UNION query2 

    query1 EXCEPT query2

    其中query1和query2的SELECT子句中字段个数必须相同,且对应的数据类型必须相同(如果int和bigint结果取bigint,varchar(5)和varchar(10)结果取varchar(10)),字段名可以不同,但是最终结果会以第一个SELECT子句中字段名称返回。

    1.造数据

    create table tbl_test1(
     a int,
     b varchar(10),
     c varchar(5)
    );
    
    create table tbl_test2(
     e int,
     f varchar(10),
     g varchar(32)
    );
    
    insert into tbl_test1(a,b,c) values (1,'HA','12'),(2,'ha','543');
    
    insert into tbl_test2(e,f,g) values (1,'HA','dh'),(3,'hk','76sskjhk');

    2.INTERSECT

    两个查询使用INTERSECT求交集的结果使用图片表示如下:

    示例1.

    select a,b from tbl_test1 intersect select e,f from tbl_test2 ;

    3.UNION / UNION ALL

    两个查询使用UNION的结果使用图片表示如下:

    UNION默认会去重,即重复数据只会返回一行

    UNION ALL会保留重复数据,返回所有行。

    示例1.

    select a,b from tbl_test1 union select e,f from tbl_test2 ;
     

    示例2.

     select a,b from tbl_test1 union all select e,f from tbl_test2 ;

    示例3.

     select a,c from tbl_test1 union all select e,g from tbl_test2 ;

    4.EXCEPT

    两个查询使用EXCEPT(A EXCEPT B)求差集的结果:

    示例1.

    select a,b from tbl_test1 except select e,f from tbl_test2 ;

    作者: BORS

  • 相关阅读:
    个人期末总结
    团队冲刺第二阶段10
    团队冲刺第二阶段9
    团队冲刺第二阶段8
    团队冲刺第二阶段7
    团队冲刺第二阶段6
    数据分析之例题
    数据分析之数据操作
    数据分析之Matplotlib可视化
    数据分析之Pandas
  • 原文地址:https://www.cnblogs.com/bors/p/postgresql_intersect_union_except.html
Copyright © 2011-2022 走看看