Computer >> 컴퓨터 >  >> 프로그램 작성 >> SQL Server

SQL Server의 INTERSECT 연산자

SQL Server(Transact-SQL)에서 INTERSECT 연산자는 데이터 세트 또는 SELECT 문 모두에서 레코드를 반환하는 데 사용됩니다. 한 쿼리에서만 레코드를 사용할 수 있고 다른 쿼리에서는 사용할 수 없는 경우 INTERSECT의 결과 집합에서 제거됩니다.

INTERSECT 쿼리

SQL Server의 INTERSECT 연산자
INTERSECT 쿼리에서 반환된 결과 설명

설명: INTERSECT 쿼리는 파란색 채우기 영역에 있는 레코드를 반환합니다. 이 레코드는 database1과 database2 모두에 있습니다.

INTERSECT의 각 SELECT는 데이터 유형이 동일한 결과 세트에서 동일한 수의 열을 가져야 합니다.

INTERSECT 연산자 구문

  SELECT b ieu_thuc1, bieu_thuc2, … bieu_thucn 
FROM bang
[WHERE dieu_kien]
INTERSECT
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kie n];

변수 이름 또는 변수 값

bieu_thuc

SELECT 문 간에 비교할 열 또는 값입니다. 각 SELECT 문에서 동일한 정보 필드에 있을 필요는 없지만 해당 열의 데이터는 동일해야 합니다.

상태

테이블은 거기에서 레코드를 가져오려고 합니다. FROM 절에 최소한 1개의 테이블이 있어야 합니다.

dieu_kien 위치

옵션. 선택한 레코드에 대해 조건이 충족되어야 합니다.

참고:

  1. 두 개의 SELECT 문에는 동일한 수의 표현식이 있어야 합니다.
  2. 각 SELECT 문의 해당 열은 데이터 유형이 동일해야 합니다.
  3. INTERSECT 연산자는 SELECT 문 사이의 일반 레코드만 반환합니다.

예:표현식 1개 사용

  SELECT sa npham_id 
FROM sanpham
INTERSECT
SELECT sanpham_id
FROM hangtonk ho;

이 예에서 sanpham_id가 sanpham 및 hangtonkho 테이블 모두에 나타나면 INTERSECT의 결과 집합에 있습니다.

이제 이 쿼리에 WHERE 조건을 추가합니다.

  SELECT sanph am_id 
FROM sanpham
WHERE sanpham_id >= 50
INTERSECT
SELECT sanpham_id
FROM hangtonkho
WHERE soluong > 0;

첫 번째 데이터세트는 대시보드 및 sanpham_id의 레코드를 필터링하고 반환합니다. 50보다 크거나 같습니다. 두 번째 데이터 세트는 hangtonkho에서 필터링됩니다. 숫자가 0보다 큰 경우 테이블입니다.

예:여러 표현식 사용

  SE LECT danhba_id, ho, ten 
FROM danhba
WHERE ho = 'Anderson'
INTERSECT
SELECT nhanvien_id, ho, ten
FROM nh anvien;

이 예에서 쿼리는 두 SELECT 문의 교차 결과를 반환합니다. danhba 목록에 레코드가 있는 경우 그 danhba_id , ho , ten danhba danhba_id , INTERSECT 쿼리의 이름은 해당 레코드를 반환합니다.

예:ORDER BY 사용

INTERSECT 쿼리와 함께 ORDER BY 절을 사용하여 결과를 정렬합니다.

  SELECT nhacun g_id, nhacung_ten 
FROM nhacung
WHERE nhacung_id > 500
INTERSECT
SELECT congty_id, congty_ten
FROM congty
WHERE congty_ten in ('Apple', 'Microsoft', 'SQL Server')
ORDER BY 2;

두 SELECT 문의 열 이름이 다르기 때문에 ORDER BY 절의 열을 결과 집합에서의 위치로 참조하는 것이 더 쉽습니다. 위의 예에서는 nhacung_ten 결과를 ​​필터링합니다. / congty_ten ORDER BY 2 구문을 통해 오름차순으로.

nhacung_ten / congty_ten 결과 집합에서 두 번째입니다.