SQL Server 中關於EXCEPT和INTERSECT的用法

來源:互聯網
上載者:User

熟練使用SQL Server中的各種用法會給查詢帶來很多方便。今天就介紹一下EXCEPT和INTERSECT。注意此文法僅在SQL Server 2005及以上版本支援。

EXCEPT是指在第一個集合中存在,但是不存在於第二個集合中的資料。

INTERSECT是指在兩個集合中都存在的資料。

測試如下:

create table t1(id int,mark char(2))<br />go<br />create table t2(id int,mark char(2))<br />go<br />insert into t1<br />select 1,'t1' union all<br />select 2,'t2' union all<br />select 3,'t3' union all<br />select 4,'t4'<br />go<br />insert into t2<br />select 2,'t2' union all<br />select 3,'m3' union all<br />select 5,'m5' union all<br />select 6,'t6'<br />go<br />select * from t1<br />EXCEPT<br />select * from t2<br />go<br />select * from t1<br />INTERSECT<br />select * from t2<br />go</p><p>--EXCEPT結果集為<br />--1t1<br />--3t3<br />--4t4</p><p>--INTERSECT結果集為<br />--2t2

 

 

EXCEPT和INTERSECT的優先順序:

為了測試它們之間的優先順序,運行下面的測試代碼:

create table t3(int id,mark char(2))<br />go<br />insert into t3<br />select 3,'t3' union all<br />select 3,'r3' union all<br />select 5,'m5' union all<br />select 5,'r5' union all<br />select 7,'b7' union all<br />select 8,'b8'<br />go<br />select * from t1<br />EXCEPT<br />select * from t2<br />INTERSECT<br />select * from t3</p><p>--運行結果<br />--1t1<br />--2t2<br />--3t3<br />--4t4<br />

 

為什麼會出現如上結果呢,請看下面的執行計畫:

 

原來t2和t3先進行的INTERSECT運算,得出5 m5結果集,再和t1進行EXCEPT運算。

 

如需轉載,請註明本文原創自CSDN TJVictor專欄:http://blog.csdn.net/tjvictor

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.