標籤:blog http 使用 strong io 資料 art 代碼
熟練使用SQL Server中的各種使用方法會給查詢帶來非常多方便。今天就介紹一下EXCEPT和INTERSECT。注意此文法僅在SQL Server 2005及以上版本號碼支援。
EXCEPT是指在第一個集合中存在,可是不存在於第二個集合中的資料。
INTERSECT是指在兩個集合中都存在的資料。
測試例如以下:
create table t1(id int,mark char(2))gocreate table t2(id int,mark char(2))goinsert into t1select 1,‘t1‘ union allselect 2,‘t2‘ union allselect 3,‘t3‘ union allselect 4,‘t4‘goinsert into t2select 2,‘t2‘ union allselect 3,‘m3‘ union allselect 5,‘m5‘ union allselect 6,‘t6‘goselect * from t1EXCEPTselect * from t2goselect * from t1INTERSECTselect * from t2go--EXCEPT結果集為--1t1--3t3--4t4--INTERSECT結果集為--2t2
EXCEPT和INTERSECT的優先順序:
為了測試它們之間的優先順序,執行以下的測試代碼:
create table t3(int id,mark char(2))goinsert into t3select 3,‘t3‘ union allselect 3,‘r3‘ union allselect 5,‘m5‘ union allselect 5,‘r5‘ union allselect 7,‘b7‘ union allselect 8,‘b8‘goselect * from t1EXCEPTselect * from t2INTERSECTselect * from t3--執行結果--1t1--2t2--3t3--4t4
為什麼會出現如上結果呢,請看以下的運行計劃:
原來t2和t3先進行的INTERSECT運算,得出5 m5結果集,再和t1進行EXCEPT運算。
如需轉載,請註明本文原創自CSDN TJVictor專欄:http://blog.csdn.net/tjvictor