Post

Oracle MINUS

1. Oracle MINUS

Oracle MINUS 연산자는 두 개의 쿼리를 비교하고 두 번째 쿼리에 의해 출력되지 않는 첫 번째 쿼리와 다른 행을 반환한다. 즉, MINUS 연산자는 한 결과 집합을 다른 결과 집합에서 뺀다.

다음은 Oracle MINUS 연산자의 구문이다.

1
2
3
4
5
6
7
8
9
SELECT
    column_list_1
FROM
    T1
MINUS 
SELECT
    column_list_2
FROM
    T2;

UNION 및 INTERSECT 연산자와 마찬가지로 다음 규칙을 준수해야 한다.

  • 열의 수와 열의 순서가 일치해야 한다.

  • 해당 열의 데이터 유형은 숫자 또는 문자와 같은 데이터 유형 그룹에 속해야 한다.

첫 번째 쿼리가 1, 2, 3을 포함하는 T1 결과 집합을 반환한다. 그리고 두 번째 쿼리는 2, 3, 4가 포함된 T2 결과 세트를 반환한다.

다음 그림은 T1 및 T2의 MINUS 결과를 보여준다.

minus

2. MINUS examples

샘플 데이터베이스에서 contacts 및 employees 테이블을 참조한다.

contacts-table

employees-table

다음 문은 오른쪽 쿼리에 없는 MINUS 연산자의 왼쪽 쿼리로부터 고유한 last_name을 반환한다.

1
2
3
4
5
6
7
8
9
10
11
SELECT
    last_name
FROM
    contacts
MINUS
SELECT
    last_name
FROM
    employees
ORDER BY
    last_name;

다음은 첫 번째 쿼리에서 반환되었지만 두 번째 쿼리의 결과 집합에서 찾을 수 없는 last_name이다.

lastnames-example

다음 products 및 inventories 테이블을 참조한다.

products-table

inventories-table

다음 명령문은 products 테이블에서 제품 ID 목록을 반환하지만 inventories 테이블에 없다.

1
2
3
4
5
6
7
8
9
SELECT
    product_id
FROM
    products
MINUS
SELECT
    product_id
FROM
    inventories;

결과는 다음과 같다.

minus-example

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.