SQL Server 의 집합 연산:UNION,EXCEPT,INTERSECT 예제 코드 상세 설명

SQL Server 의 집합 연산 은UNION(합병),EXCEPT(차 집합)와INTERSECT(교차)세 가 지 를 포함한다.
집합 연산 의 기본 사용
1UNION(두 개의 검색 결과 집합 을 합 쳐 암시 적 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)
2UNION 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)
3EXCEPT(첫 번 째 결과 집에 나타 나 지만 두 번 째 결과 에 집 중 된 모든 줄 에 나타 나 지 않 음)

--     :[e]
SELECT FC FROM (VALUES('a'),('b'),('c'),('e')) Table1 (FC)
EXCEPT
SELECT FC FROM (VALUES('a'),('b'),('c'),('d')) Table2 (FC)
4INTERSECT(첫 번 째 조회 결과 집 과 두 번 째 조회 결과 집 이 공유 하 는 부분 을 되 돌려 줍 니 다)

--     :[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.4.567914.와 4.567914 를 사용 하여 목록 에 존재 하지 않 거나 데이터베이스 에 존재 하 는 항목 을 걸 러 냅 니 다.
가설 존재 표EXCEPT데 이 터 는 다음 표 와 같다.
cust_id
cust_name
cust_address
cust_city
cust_state
cust_country
cust_contact
cust_email
1000000001
Village Toys
200 Maple Lane
Detroit
MI
USA
John Smith
[email protected]
1000000002
Kids Place
333 South Lake Drive
Columbus
OH
USA
Michelle Green
NULL
1000000003
Fun4All
1 Sunny Place
Muncie
IN
USA
Jim Jones
[email protected]
1000000004
Fun4All
829 Riverside Drive
Phoenix
AZ
USA
Denise L. Stephens
[email protected]
1000000005
The Toy Store
4545 53rd 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 - UNION
SQL Server 의 집합 연산:UNION,EXCEPT,INTERSECT 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 SQL Server 의 집합 연산 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기