[SQL Server] テーブルのデータを比較する時はEXCEPT, INTERSECTオペランド

inno
2014-03-15 21:12 11741 0
[SQL Server] テーブルのデータを比較する時はEXCEPT, INTERSECT


テーブル内のデータを比較する時に使う「EXCEPT」, 「INTERSECT」オペランドについて説明します。

実際に実行しながら動作確認をしたいと思いますので、
下記のSQLを実行して「TempA」、「TempB」テーブルを作成して
それぞれデータまで登録をしましょう。


CREATE TABLE dbo.TempA
(
Idx int
)

CREATE TABLE dbo.TempB
(
Idx int
)

-- #### TempA テーブルのデータ登録 ####
INSERT INTO dbo.TempA (Idx) VALUES (1)
INSERT INTO dbo.TempA (Idx) VALUES (2)
INSERT INTO dbo.TempA (Idx) VALUES (3)

-- #### TempB テーブルのデータ登録 ####
INSERT INTO dbo.TempB (Idx) VALUES (3)
INSERT INTO dbo.TempB (Idx) VALUES (4)


ここまで準備ができましたら、
EXCEPT」, 「INTERSECTオペランドについて説明します。

まずは、「EXCEPT」オペランドです。



上記のイメージのように「TempA」、「TempB」テーブルがありますが、
左のテーブル「TempA」を元に右のテーブル「TempB」に存在しないデータを抽出します。
実際に下記のSQLを実行して確認してみましょう。

SELECT * FROM dbo.TempA
EXCEPT
SELECT * FROM dbo.TempB


実行結果



「TempA」テーブルの「1」、「2」値が「TempB」には存在しないため
「1」、「2」が実行結果として返されました。

では、次は「INTERSECT」オペランドです。



INTERSECT」オペランドは両テーブルにデータが一致するデータを返します。
実際に下記のSQLを実行して確認してみましょう。


SELECT * FROM dbo.TempA
INTERSECT
SELECT * FROM dbo.TempB

実行結果




「TempA」テーブルの「3」値と「TempB」テーブルの「3」値と一致するので、
「3」が実行結果として返されました。

EXCEPT」, 「INTERSECT」データを比較する時は便利です。

コメント