[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」データを比較する時は便利です。