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

SQL Server의 UNION 연산자

UNION 연산자는 2개 이상의 SELECT 문에서 2개의 결과 집합을 결합하는 데 사용됩니다. 이 SELECT 문에서 동일한 행을 삭제합니다.

UNION 연산자의 각 SELECT는 해당 데이터 유형의 결과 집합에서 동일한 수의 열을 가져야 합니다.

UNION 연산자 구문

  SE LECT bieu_thuc1, bieu_thuc2, … bieu_thucn 
FROM bang
[WHERE dieu_kien]
UNION
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kien];

변수 이름 또는 변수 값

bieu_thuc1, bieu_thuc2, . bieu_thucn

검색하려는 열 또는 계산 값입니다.

상태

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

dieu_kien 위치

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

참고:

  1. 2개의 SELECT 문에는 동일한 수의 표현식이 있어야 합니다.
  2. 각 SELECT 문의 해당 열 수는 데이터 유형이 동일해야 합니다.
  3. UNION 연산자는 중복 행을 지웁니다.

  4. 더 많은 UNION ALL 연산자 보기

예:정보 필드 반환

예를 들어 UNION 연산자는 여러 SELECT 문(및 데이터 유형이 동일한 필드)에서 필드를 반환합니다.

  SELECT san pham_id 
FROM sanpham
UNION
SELECT sanpham_id
FROM hangtonkho;

위의 예에서 sanpham_id가 sanpham 및 hangtonkho 테이블 모두에 나타나면 결과 집합에는 1개의 sanpham_id만 나타납니다. 중복 레코드를 제거하지 않으려면 UNION ALL 연산자를 사용하십시오.

예:ORDER BY 사용

UNION 연산자는 ORDER BY 절을 사용하여 쿼리 결과를 정렬할 수 있습니다.

  SELE CT danhba_id, danhba_ten 
FROM danhba
WHERE ten_trang = 'QuanTriMang.com'
UNION
SELECT congty_id, congty_ten
FROM congty
WHERE ten_trang = 'TrangCuaBan.com'
ORDER B Y 2;

이 예에서는 두 SELECT 문의 열 이름이 다르기 때문에 ORDER BY 문의 열을 결과 집합의 위치별로 참조하는 것이 더 쉽습니다. 위의 예에서 우리는 ORDER BY 2라는 문구에 명시된 것처럼 namba_ten / congty_ten을 기준으로 결과를 오름차순으로 필터링합니다.

danhba_ten / congty_ten은 결과 집합의 두 번째 위치에 있습니다.