Sql Server中集合的操作(並集、差集、交集)學習


首先我們做一下測試數據

1、創建測試數據

--創建人員表1--
create table Person1
(
    Uid int identity(1,1) primary key,
    Name varchar(20) not null
)
--創建人員表2--
create table Person2
(
    Uid int identity(1,1) primary key,
    Name varchar(20) not null
)

--插入數據--
insert into Person1 values('曹操'),('郭嘉'),('典韋'),('孫權'),('周瑜')
insert into Person2 values('劉備'),('關羽'),('張飛'),('孫權'),('周瑜')

--查詢數據--
select * from Person1
select * from Person2

2、測試數據查詢結果如下

1)表1和表2的數據

3、集合中的並集、差集和交集

3.1、並集(union)

1)並集的定義

  Union可以對兩個或多個結果集進行連接,形成“並集”。子結果集所有的記錄組合在一起形成新的結果集。

2)限制條件
  2.1)子結果集要具有相同的結構。
  2.2)字結果集的列數必須相同。
  2.3)子結果集對應的數據類型必須可以兼容。
  2.4)每個子結果集不能包含order by和compute子句

3)  並集的使用

--1、並集 union  --

--1)去掉重復項的並集--
select Name from Person1
union 
select Name from Person2

--2)不去掉重復項的並集--
select Name from Person1
union all
select Name from Person2

4)查詢的結果

3.2、差集(except)

1)差集的定義

  Except可以對兩個或多個結果集進行連接,形成“差集”。返回左邊結果集合中已經有的記錄,而右邊結果集中沒有的記錄。

2) 限制條件

  2.1)子結果集要具有相同的結構。

  2.2)子結果集的列數必須相同

  2.3)子結果集對應的數據類型必須可以兼容。

  2.4)每個子結果集不能包含order by 和 compute子句。

3)差集的使用

--Except 差集---
select Name from Person1 
except
select Name from Person2

4)查詢的結果

3.3 、交集(InterSect)

1)交集的定義

  InterSect可以對兩個或多個結果集進行連接,形成“交集”。返回左邊結果集和右邊結果集中都有的記錄

2)限制條件

  2.1)子結果集要具有相同的結構。

  2.2)子結果集的列數必須相同

  2.3)子結果集對應的數據類型必須可以兼容。

  2.4)每個子結果集不能包含order by 和 compute子句。

3)交集的使用

--InterSect 交集--
select * from Person1 
InterSect
select * from Person2

4)查詢的結果

參考網址:

http://www.cnblogs.com/kissdodog/archive/2013/06/24/3152743.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM