当前位置: 代码迷 >> Sql Server >> UNION、EXCEPT跟INTERSECT操作查询结果
  详细解决方案

UNION、EXCEPT跟INTERSECT操作查询结果

热度:292   发布时间:2016-04-24 08:44:48.0
UNION、EXCEPT和INTERSECT操作查询结果

对查询结果进行合并、剔除、取重操作可以通过UNION、EXCEPT和INTERSECT实现

任意一种操作都要满足以下两个条件:

  1.字段的数量和顺序一致

  2.对应字段的数据类型相兼容

一、UNION

类似集合的并集运算,如果加上修饰符[ALL]更接近与集合的加法运算,因为[ALL]可以确保不会出现重复的记录。

示例:下面两个表,查询拥有银行存款账号或贷款账号的客户姓名

表Depositor:
Customer_name Acc_num
1 Nora   1012 Robin   1033 James   1074 Jennifer 109
表Borrower:
Customer_name Loan_num
1 Nora 3012 Robin 3053 James 3064 Jenne 308

  无[ALL]修饰:

1  SELECT Customer_name FROM Depositor2  UNION 3  SELECT Customer_name FROM Borrower

  查询结果:

Customer_name
1
James2 Jenne3 Jennifer4 Nora5 Robin6 Tom

  有[ALL]修饰:

1   SELECT Customer_name FROM Depositor2  UNION ALL 3  SELECT Customer_name FROM Borrower

  查询结果:

Customer_name
1
Nora2 Robin3 James4 Jennifer5 Tom6 Nora7 Robin8 James9 Jenne

二、EXCEPT

类似于集合的减法,从前一个表中剔除两个表中相同的记录。

示例:还是基于上文两个表,查询只有银行存款账号而没有贷款账号的客户姓名

1  SELECT Customer_name FROM Depositor2  EXCEPT 3  SELECT Customer_name FROM Borrower

查询结果:

Customer_name
1
Jennifer

三、INTERSECT

类似于集合的交集运算,选出两个表中相同的记录

示例:同样基于上文的两个表,查询既有银行存款账号又有贷款账号的客户信息

1  SELECT Customer_name FROM Depositor2  INTERSECT3  SELECT Customer_name FROM Borrower

查询结果:

Customer_name
1
James2 Nora3 Robin
  相关解决方案