這篇文(′?ω?`)章主要介紹了sql server 交集,交集差集差集的用法詳解,文中通過(guò)示例代碼介紹的用法(╯°□°)╯︵ ┻━┻非常詳(′?ω?`)細,對大家的詳解學(xué)習或者工作具有一定的參考學(xué)習價(jià)值,需要的交集差集朋友們(′_ゝ`)下面隨著(zhù)小編來(lái)一(′;ω;`)起學(xué)習學(xué)習吧
概述
為什么使用集合運算:
并集運算(UNION)
并集:兩個(gè)集合的用法并集是一個(gè)包含集合A和B中所有元素的集合。
在T-SQL中。詳解UNION集合運算可以將兩個(gè)輸入查詢(xún)的交集差集??結果組合成一個(gè)結果集。需要注意的用法是:如果一個(gè)行在任何一個(gè)輸入集合中出現,它也會(huì )在UNION運算的詳解結果中出現。T-SQL支持以下兩種選項:
(1)UNION ALL:不會(huì )刪除重復行
-- union allselect
country,交集差集 region??, city from hr.Employees
union all??
select country, region, city from sales.Customers;
(2)UNION:會(huì )刪除重復行
-- union
select country, region from hr.ヽ(′ー`)ノEmployees
union
select country, region from sales.Customers;
交集運算(INTERSECT)?
交集:兩個(gè)集合(記為集合A和集合B)的交集是由既屬于A(yíng),也屬于B的用法所有元素組成的集合。
在T-SQL中,詳解INTERSECT集合運算對兩個(gè)輸入查詢(xún)的交集差集結果取( ?° ?? ?°)其交集,只返回在兩個(gè)查詢(xún)結果集中都(°ロ°) !出現的用法行。
INTERSECT集合運算在邏輯上會(huì )首先刪除兩個(gè)輸入集中的詳解??重復行,然后返回只在兩個(gè)集合中中都出現的行。換句話(huà)說(shuō):如果一個(gè)行在兩個(gè)輸入集中都至少出(′;ω;`)現一次,那么交集返回的結果中將包含這一行(xing)。
例如,下(╥_╥)面返回既是雇員地址,又是客??戶(hù)地址的不同地址:
-- intersec???t
select country, region, city from hr.Employees
inters??ect
select country, region, city from sales.Customers;
這里需要說(shuō)的是,集合運算對行進(jìn)行比較時(shí),認為兩(liang)個(gè)NULL值相等,所以就返回該行記錄。
差集運算(EXCEPT)
差集:兩個(gè)集合(記為集合A和集合B)(╯°□°)╯的由屬于集合A,但不屬于集?合B的所有元素組成的集合。
在T-SQL中,集合???之差使(shi)用EXCEPT集合運算實(shí)現的。(???)它對兩個(gè)輸入查詢(xún)的結果集進(jìn)行操作,反會(huì )出現在第一個(gè)結果集中,但不出現在第二個(gè)結果集中的所有行。
此外,相比UNION和INTERSECT,兩(T_T)個(gè)輸入集合??的順序是會(huì )影響到最后返回結果的。
例如,借助EXCEPT運算,我們可以方便地實(shí)現屬于A(yíng)但不屬于B的場(chǎng)景,下面返回屬于員工抵制,但不屬于客戶(hù)地址的地址記錄:
-- except
select country, region, city from hr.Employees
except
select country, region,?? city fr??om sales.Customers;
集合運算優(yōu)先級
SQL定義了集合運算之間的優(yōu)先級:INTERSECT最高,UNION和EXCEPT相等。
換句話(huà)說(shuō):首先會(huì )計算INTERSECT,然后按照從左?至右的出現順序依次處理優(yōu)先級相同的運算。
-- 集合運算的優(yōu)先級
sele??ct country, region, city from Production.Suppliers
except
select country, region, city from hr.Employees
intersect
select country, region, city from sales.Custo┐(′ー`)┌mers;
上面這段SQL代碼,因為INTERSECT優(yōu)先級比EXCEPT高,所以(yi)首先進(jìn)行INTERSECT交集運算。因此,這個(gè)查詢(xún)的含義是:返回沒(méi)有出現在員工地址和(he)客戶(hù)地址交集中的供應商ヽ(′ー`)ノ地址。
集合運算的優(yōu)先級
1.INTERSECT>UNION=EXCEPT
2.首先計算INTERSECT,然后從左到右的出現順序依次處理優(yōu)先(xian)級的相同的運算。
3.可以使用圓括號控制集合運算的(de)優(yōu)先級,它具有最高的優(yōu)先級。
使用表表達式避開(kāi)不支持的邏輯查詢(xún)處理
集合運算查詢(xún)本身并不持之除ORDER BY意外的其他邏輯查詢(xún)處理階段,但可以通過(guò)表表達式來(lái)避開(kāi)(′▽?zhuān)?這一限制。
解決方案就是:首先根據包含集合運算的查詢(xún)定義一個(gè)表表達??式,然后在外部查詢(xún)中對表表達式應用任何需要的邏輯查詢(xún)處理。
(1)例如,下面的查??詢(xún)返回(hui)每個(gè)國家中不同的員工地址或客戶(hù)地址的數量:
select country, COUNT(*) as numlocations
from (select country, region, city from hr.Employees
union
select country, region, city from sales.Customers) as Ugroup by country;
select empid,orderid,orderdate
from (select top (2) empid,orderid,o??rderdate
from sales.Orders
where empid=3
order by orderdate desc,orderid des(′ω`)c) as D1
union all
select empid,orderid,orderdate
from (select top (2) empid,orderid,orderdate
from sales.Orders
where empid=5
order by orderdate desc,orderid desc) as(′_ゝ`) D2;
到此這篇關(guān)于sql server 交集,差集的用法詳解的文章就介紹到這了,更多相關(guān)sql server(′?_?`) 交集,差集 內容請搜索腳本之??家ヾ(′ω`)?以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
來(lái)源:腳本之家
鏈接:https://w??ww.(//ω//)j??b51.net/article/191585.htm(╯‵□′)╯


網(wǎng)站二維碼
導航
電話(huà)
短信
咨詢(xún)
地圖
分享