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

  • 相关阅读:
    产品和项目的工作职责
    敏捷项目管理三板斧
    第60件事 关于产品运营的10个故事
    第59件事 运营驱动产品调优案例
    第58件事 借势文案创作实例
    第57件事 用户增长模型和运营成本评估
    Mac PD 虚拟机 鼠标双击 输入 "c" 解决
    spring mvc 异常统一处理
    Bootstrap 标签页(Tab)插件
    git tag — 标签相关操作
  • 原文地址:https://www.cnblogs.com/bors/p/postgresql_intersect_union_except.html
Copyright © 2011-2022 走看看