SQL SERVER: 合并相關操作(Union,Except,Intersect)

來源:互聯網
上載者:User

SQL Server 中對於結果集有幾個處理,值得講解一下

1. 並集(union,Union all)

這個很簡單,是把兩個結果集水平合并起來。例如

SELECT * FROM A

UNION

SELECT * FROM B

【注意】union會重複資料刪除值,也就是說A和B中重複的行,最終只會出現一次,而union all則會保留重複行。

 

2. 差異(Except)

就是兩個集中不重複的部分。例如

SELECT * FROM A

EXCEPT

SELECT * FROM B

這個的意思是,凡是不出現在B表中的A表的行。

 

3. 交集(intersect)

就是兩個集中共同的部分。例如

SELECT * FROM A

INTERSECT

SELECT * FROM B

這個的意思是,同時出現在A和B中的記錄

 

本文由作者:陳希章 於 2009/6/26 18:31:02 發布在:http://www.cnblogs.com/chenxizhang/
本文著作權歸作者所有,可以轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,否則保留追究法律責任的權利。
更多部落格文章,以及作者對於部落格引用方面的完整聲明以及合作方面的政策,請參考以下網站:陳希章的部落格中心
本文是使用部落格同步和管理系統自動於2009/6/26 18:31:04 從 陳希章@部落格園 同步過來的。原文地址: http://www.cnblogs.com/chenxizhang/archive/2009/06/26/1511889.html ,發表於2009/6/26 10:31:00.

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/chen_xizhang/archive/2009/06/26/4301621.aspx

 

union, EXCEPT 和 INTERSECT使用方法:

 

SQL中的UNION, EXCEPT 和 INTERSECT做下示範:

這三個放在一起是有理由的,因為他們都是操作兩個或多個結果集,並且這些結果集有如下限制:
  • 所有查詢中的列數和列的順序必須相同.
  • 資料類型必須相容.

並且它們都是處理於多個結果集中有重複資料的問題

首先還是建立測試環境

 

use tempdb

create table tempTable1 (id int primary key identity, price int)
create table tempTable2 (id int primary key identity, price int)
insert into tempTable1 select 3 union all select 1 union all select 2 union all select 3 
insert into tempTable2 select 3 union all select 4 union all select 1 union all select 2

select * from temptable1
select * from temptable2

 

兩個表的初始結果如下

 

非常簡單的兩個表,列數和列順序一樣. 只要保證有資料完全一致,就可以說他們是重複的資料, 這樣用上面3個運算詞才會有效.

先來看看UNION和UNION ALL

select * from temptable1
union
select * from temptable2

select * from temptable1
union all
select * from temptable2

 

有 ALL 關鍵字是完全整合兩個結果集,而無 ALL 是在之前的基礎上去重了,所以第一個查詢中{id:1, price:3}只會顯示一條,結果如下:

在來看看EXCEPT, 也是去重的, 但是它在去掉兩個或多個集合中重複資料的之後, 只會保留第一個結果集中的資料

select * from temptable1
except
select * from temptable2

 

其實也是查詢表A, 看錶A的資料在表B中是否存在, 如果存在, 則刪掉

而INTERSECT比較好理解, 就是查詢兩個結果集的並集, 利用上面的資料,查詢到的結果只有一條, 就是{id:1, price:3}, 這裡就不給出代碼和結果圖

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.