zoukankan      html  css  js  c++  java
  • postgresql----UNION&&INTERSECT&&EXCEPT

    多个SELECT语句可以使用UNION,INTERSECT和EXCEPT进行集合处理,其中UNION用于求并集,INTERSECT用于求交集,EXCEPT用于求差集。用法如下

    query1 UNION query2 

    query1 INTERSECT query2

    query1 EXCEPT query2

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

    测试表:

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

    一.UNION

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

    UNION默认会去重,即重复数据只会返回一行,如果需要保留重复数据所有行可以使用UNION ALL。

    示例1.

    test=# select a,b from tbl_test1 union select e,f from tbl_test2 ;
     a | b  
    ---+----
     3 | hk
     1 | HA
     2 | ha
    (3 rows)

    示例2.

    test=# select a,b from tbl_test1 union all select e,f from tbl_test2 ;
     a | b  
    ---+----
     1 | HA
     2 | ha
     1 | HA
     3 | hk
    (4 rows)

    示例3.

    test=# select a,c from tbl_test1 union all select e,g from tbl_test2 ;
     a |    c     
    ---+----------
     1 | 12
     2 | 543
     1 | dh
     3 | 76sskjhk
    (4 rows)

    二.INTERSECT

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

    示例1.

    test=# select a,b from tbl_test1 intersect select e,f from tbl_test2 ;
     a | b  
    ---+----
     1 | HA
    (1 row)

    三.EXCEPT

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

    示例1.

    test=# select a,b from tbl_test1 except select e,f from tbl_test2 ;
     a | b  
    ---+----
     2 | ha
    (1 row)
  • 相关阅读:
    备份与还原SQL Server 数据库
    ASP网站发布到IIS上注意问题
    MySQL相关积累
    C#中 让日历控件dateTimePicker1显示你想要的日期
    C#,右击鼠标,窗体出现在鼠标右边
    c#中combobox绑定数据库成功(方法二)
    java web 编写资料
    windows下使用gethostbyname函数报错无法解析的外部符号
    C语言中的作用域,链接属性和存储类型
    二级指针的用法
  • 原文地址:https://www.cnblogs.com/alianbog/p/5621562.html
Copyright © 2011-2022 走看看