SQL差集的使用(EXCEPT)

來源:互聯網
上載者:User
文章目錄
  • 前言
  • 實作
  • 參考資料
前言

一般來說,我們大多是用交集,但如果要取差集呢? 如下圖A + C部份!

實作

直覺來想的話,會使用NOT IN OR NOT EXISTS來做,但是也可以使用EXCEPT哦!

請參考以下的SQL, 在ORACLE的話,請使用MINUS

--SQL差集練習--資料準備DECLARE @EMPLOYEE TABLE(ID INT IDENTITY(1,1) , EMP_NAME NVARCHAR(32), TOOL_NAME NVARCHAR(64));INSERT INTO @EMPLOYEE(EMP_NAME, TOOL_NAME) VALUES(N'打死釘', N'手鎗');INSERT INTO @EMPLOYEE(EMP_NAME, TOOL_NAME) VALUES(N'打死釘', N'直昇機');INSERT INTO @EMPLOYEE(EMP_NAME, TOOL_NAME) VALUES(N'亂馬客', N'直昇機');INSERT INTO @EMPLOYEE(EMP_NAME, TOOL_NAME) VALUES(N'亂馬客', N'炸彈');--EMP的TOOL_NAME INFOSELECT * FROM @EMPLOYEE WHERE EMP_NAME = N'亂馬客'SELECT * FROM @EMPLOYEE WHERE EMP_NAME = N'打死釘'--亂馬客有,但打死釘沒有的TOOL(圖C)SELECT TOOL_NAME FROM @EMPLOYEE WHERE EMP_NAME = N'亂馬客'EXCEPTSELECT TOOL_NAME FROM @EMPLOYEE WHERE EMP_NAME = N'打死釘'--打死釘有,但亂馬客沒有的TOOL(圖A)SELECT TOOL_NAME FROM @EMPLOYEE WHERE EMP_NAME = N'打死釘'EXCEPTSELECT TOOL_NAME FROM @EMPLOYEE WHERE EMP_NAME = N'亂馬客'--亂馬客及打死釘相異的的TOOL(圖A + C)(SELECT TOOL_NAME FROM @EMPLOYEE WHERE EMP_NAME = N'亂馬客'EXCEPTSELECT TOOL_NAME FROM @EMPLOYEE WHERE EMP_NAME = N'打死釘')UNION(SELECT TOOL_NAME FROM @EMPLOYEE WHERE EMP_NAME = N'打死釘'EXCEPTSELECT TOOL_NAME FROM @EMPLOYEE WHERE EMP_NAME = N'亂馬客')
 
參考資料

SQL各類集合(差集、交集、聯集等範例)

Oracle UNION, INTERSECT, MINUS OPERATORS AND SORTING QUERY RESULT

聯繫我們

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