다음을 통해 공유


연산자 설정

적용 대상:예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime

앞의 subquery1subquery2을 하나로 결합합니다. Azure Databricks는 세 가지 유형의 집합 연산자를 지원합니다.

  • EXCEPT
  • INTERSECT
  • UNION

구문

{ UNION | INTRECEPT | EXCEPT } [ ALL | DISTINCT ] subquery2 } [...]
  • 하위 쿼리2

    SELECT(하위 선택)에서 지정된 임의의 두 개의 subquery 절입니다. 두 하위 쿼리 모두 열 수가 같아야 하며 각 열에 대해 최소 공통 형식을 공유해야 합니다.

  • UNION [ALL | DISTINCT]

    subquery1 결과와 subquery2행을 반환합니다.

    ALL을 지정하면 중복 행이 유지됩니다.

    DISTINCT를 지정하면 결과에 중복 행이 포함되지 않습니다. 기본값입니다.

  • INTERSECT [ALL | DISTINCT]

    두 하위 쿼리에 있는 행 집합을 반환합니다.

    ALL을 지정하면 subquery1subquery에서 여러 번 나타나는 행이 여러 번 반환됩니다.

    DISTINCT를 지정하면 결과에 중복 행이 포함되지 않습니다. 기본값입니다.

  • EXCEPT [ALL | DISTINCT ]

    subquery1에는 있지만 subquery2에는 없는 행을 반환합니다.

    ALL가 지정된 경우, subquery2의 각 행은 subquery1에서 여러 일치 항목 중 정확히 하나를 제거합니다.

    DISTINCT를 지정하면 연산을 적용하기 전에 subquery1에서 중복 행이 제거되므로 일치하는 모든 행이 제거되고 결과에는 중복 행(일치하거나 일치하지 않는 행)이 남지 않습니다. 기본값입니다.

    MINUS의 대체 구문으로 EXCEPT를 지정할 수 있습니다.

집합 작업을 연결할 때 INTERSECTUNIONEXCEPT보다 우선 순위가 높습니다.

각 결과 열의 형식은 subquery1subquery2해당 열의 가장 일반적인 형식입니다.

결과 열이 경우 하위 쿼리의 열에 데이터 정렬 우선 순위 규칙을 적용하여 데이터 정렬이 파생됩니다.

예제

-- Use number1 and number2 tables to demonstrate set operators in this page.
> CREATE TEMPORARY VIEW number1(c) AS VALUES (3), (1), (2), (2), (3), (4);

> CREATE TEMPORARY VIEW number2(c) AS VALUES (5), (1), (1), (2);

> SELECT c FROM number1 EXCEPT SELECT c FROM number2;
  3
  4

> SELECT c FROM number1 MINUS SELECT c FROM number2;
  3
  4

> SELECT c FROM number1 EXCEPT ALL (SELECT c FROM number2);
  3
  3
  4

> SELECT c FROM number1 MINUS ALL (SELECT c FROM number2);
  3
  3
  4

> (SELECT c FROM number1) INTERSECT (SELECT c FROM number2);
  1
  2

> (SELECT c FROM number1) INTERSECT DISTINCT (SELECT c FROM number2);
  1
  2

> (SELECT c FROM number1) INTERSECT ALL (SELECT c FROM number2);
  1
  2
  2

> (SELECT c FROM number1) UNION (SELECT c FROM number2);
  1
  3
  5
  4
  2

> (SELECT c FROM number1) UNION DISTINCT (SELECT c FROM number2);
  1
  3
  5
  4
  2

> SELECT c FROM number1 UNION ALL (SELECT c FROM number2);
  3
  1
  2
  2
  3
  4
  5
  1
  1
  2