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

SQL Server의 EXCEPT 연산자

SQL Server의 EXCEPT 연산자는 두 번째 SELECT 문에서 반환되지 않은 첫 번째 SELECT 문의 행을 반환하는 데 사용됩니다. 각 SELECT 문에는 데이터 세트가 있습니다. EXCEPT 연산자는 첫 번째 집합에서 레코드를 가져오고 집합 2에서 결과를 제거합니다.

예외 쿼리

SQL Server의 EXCEPT 연산자
쿼리 일러스트레이션 제외

설명: EXCEPT 쿼리는 데이터 세트 1에만 있고 데이터 세트 2에는 없는 파란색 영역의 레코드를 반환합니다.

EXCEPT 쿼리의 각 SELECT 문은 데이터 유형이 동일한 결과 집합에서 동일한 수의 필드를 가져야 합니다.

EXCEPT 연산자 구문 제외

  SELECT bieu_thuc1 thuc1, bieu_thuc2, … bieu_thucn 
FROM bang
[WHERE dieu_kien]
EXCEPT
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. EXCEPT 연산자는 첫 번째 SELECT 문에서 모든 레코드를 반환하고 두 번째 SELECT 문에서는 반환하지 않습니다.
  4. SQL Server의 EXCEPT 연산자는 Oracle의 MINUS 연산자와 동일합니다.

예:표현식 1개 사용

  SELECT  sanpham_id 
FROM sanpham
EXCEPT
SELECT sanpham_id
FROM hang tonkho;

이 EXCEPT 연산자가 있는 예에서 결과는 hangtonkho 테이블이 아닌 변수 테이블의 모든 sanpham_id 값을 반환합니다. 즉, sanpham_id 값이 두 테이블 모두에서 사용 가능한 경우 반환되지 않습니다.

예:여러 표현식 사용

  SELECT dan hba_id, ho, ten 
FROM danhba
WHERE ho = 'Anderson'
EXCEPT
SELECT nhanvien_id, ho, ten
FROM nhanvien ;

이 예에서 쿼리는 연락처 ID가 있는 namba 테이블의 레코드를 반환합니다. 이름과 성은 직원의 ID, 성 및 이름과 일치하지 않습니다. 테이블.

예:ORDER BY 절 사용

  SELECT nh acung_id, nhacung_ten 
FROM nhacung
WHERE bang = 'Florida'
EXCEPT
SELECT congty_id, congty_ten
FROM congty
WHERE congty_id <= 400
ORDER BY 2;

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

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