SQL Serverにおける集合演算:UNION、EXCEPT、INTERSECTの例コード詳細
SQL Serverにおけるセット演算は、
集合演算の基本使用
1.
1.
テーブル
cust_id。
cust_name
cust_address
cust_シティ
cust_state
cust_country
cust_プロジェクト
cust_email
100000万01
Village Toys
200 Maple Lane
Detrit
MI
USA
ジョン?スミス
[email protected]
100000万02
キッズプラザ
333 South Lake Drive
Columbus
OH
USA
Michele Green
NULL
100000万03
Fun 4 All
1 Suny Place
Munncie
IN
USA
Jim Jones
[email protected]
100000004
Fun 4 All
829 Riverside Drive
Phoenix
AZ
USA
Denise L.Stephhens
[email protected]
100000万05
The Toy Store
4545 rd Street
Chicago
IL。
USA
Kim Howard
NULL
Set Operators-EXCEPT and INTERSECT
Set Operators-ユニオン
ここではSQL Serverの集合演算についてです。UNION、EXCEPT、INTERSECTの記事を紹介します。SQL Serverの集合演算内容については以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。
UNION
(マージ)、EXCEPT
(差分セット)、INTERSECT
(交差)の3つを含む。集合演算の基本使用
1.
UNION
(2つの照会結果セット、暗黙的なDINSTINCTを統合し、重複行を削除する)
-- / (derived table), :[a,b,c,d,e]
SELECT FC FROM (VALUES('a'),('b'),('c'),('e')) Table1 (FC)
UNION
SELECT FC FROM (VALUES('a'),('b'),('c'),('d')) Table2 (FC)
2.UNION ALL
(単純に二つの照会結果セットを統合し、重複行を削除しない)
-- / (derived table) , 、 ,
SELECT * FROM (VALUES('a','Anna'),('b','Bob'),('c','Cassie'),('e','Elina')) Table1 (FC, Name)
UNION ALL
SELECT * FROM (VALUES('a','Anna'),('b','Bob'),('c','Cassie'),('d','David')) Table2 (FC, Name)
3.EXCEPT
(第1の結果セットで現れたが、第2の結果セットでは現れないすべての行を返します。)
-- :[e]
SELECT FC FROM (VALUES('a'),('b'),('c'),('e')) Table1 (FC)
EXCEPT
SELECT FC FROM (VALUES('a'),('b'),('c'),('d')) Table2 (FC)
4.INTERSECT
(第一クエリー結果セットと第二クエリー結果セットの共有部分を返します。)
-- :[a,b,c]
SELECT FC FROM (VALUES('a'),('b'),('c'),('e')) Table1 (FC)
INTERSECT
SELECT FC FROM (VALUES('a'),('b'),('c'),('d')) Table2 (FC)
集合演算の使用シーン1.
UNION
の部分文のWhere
の代わりにOR
を使用すると、照会速度がより速い。
-- Where + OR
SELECT name, population, area FROM world WHERE area > 3000000 OR population > 25000000
-- UNION
SELECT name, population, area FROM world WHERE area > 3000000
UNION
SELECT name, population, area FROM world WHERE population > 25000000
2.EXCEPT
およびINTERSECT
を使用して、リスト内に存在しない/データベース内に存在する項目をフィルタリングする。テーブル
Customers
があると仮定して、データは下表の通りです。cust_id。
cust_name
cust_address
cust_シティ
cust_state
cust_country
cust_プロジェクト
cust_email
100000万01
Village Toys
200 Maple Lane
Detrit
MI
USA
ジョン?スミス
[email protected]
100000万02
キッズプラザ
333 South Lake Drive
Columbus
OH
USA
Michele Green
NULL
100000万03
Fun 4 All
1 Suny Place
Munncie
IN
USA
Jim Jones
[email protected]
100000004
Fun 4 All
829 Riverside Drive
Phoenix
AZ
USA
Denise L.Stephhens
[email protected]
100000万05
The Toy Store
4545 rd Street
Chicago
IL。
USA
Kim Howard
NULL
--
-- ['1000000006','1000000007']
SELECT [Id] AS [cust_id] FROM
(
VALUES('1000000004'),('1000000005'),('1000000006'),('1000000007')
) dt ([Id])
EXCEPT
SELECT [cust_id] FROM [Customers]
--
-- ['1000000004','1000000005']
SELECT [Id] AS [cust_id] FROM
(
VALUES('1000000004'),('1000000005'),('1000000006'),('1000000007')
) dt ([Id])
INTERSECT
SELECT [cust_id] FROM [Customers]
-- SQLServer 2008
SELECT [Id] AS [cust_id] FROM
(
SELECT '1000000004' UNION ALL
SELECT '1000000005' UNION ALL
SELECT '1000000006' UNION ALL
SELECT '1000000007'
) dt ([Id])
INTERSECT
--EXCEPT
SELECT [cust_id] FROM [Customers]
// C# SQL
var list = new List<string>(){"1000000004","1000000005","1000000006","1000000007"};
string sqlQuery = string.Format($@"
SELECT [Id] AS [cust_id] FROM
(
VALUES('{string.Join("'),('", list)}')
) dt ([Id]
INTERSECT
--EXCEPT
SELECT [cust_id] FROM [Customers]"
);
より多くの参照Set Operators-EXCEPT and INTERSECT
Set Operators-ユニオン
ここではSQL Serverの集合演算についてです。UNION、EXCEPT、INTERSECTの記事を紹介します。SQL Serverの集合演算内容については以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。