TOP

SQL 강의 12. 결합된 쿼리(UNION)

대부분의 SQL 쿼리는 하나 이상의 테이블에서 데이터를 반환하는 단일 문을 사용합니다. 또한 SQL을 사용하면 동시에 여러 개의 개별 쿼리를 실행하고 결과를 단일 데이터 세트로 표시할 수 있습니다. 이러한 결합 쿼리를 일반적으로 조인 또는 복합 쿼리라고 합니다.


1. UNION 연산자 사용

SQL 쿼리는 UNION 연산자를 사용하여 결합됩니다. 이렇게 하려면 각 요청을 SELECT 지정하고 그 사이에 UNION 키워드를 배치해야 합니다. 하나의 일반 쿼리에서 UNION 연산자의 사용 횟수에는 제한이 없습니다. 이전 섹션에서 MS Access에는 완전한 외부 공용체를 생성하는 기능이 없다는 점을 언급했습니다. 이제 UNION 연산자를 통해 이것이 어떻게 달성될 수 있는지 살펴보겠습니다.

Run SQLSELECT *
FROM Sumproduct 
LEFT JOIN Sellers2 
ON Sumproduct.City = Sellers2.City
UNION
SELECT * 
FROM Sumproduct 
RIGHT JOIN Sellers2 
ON Sumproduct.City = Sellers2.City

모든 레코드가 다른 테이블에 대응 항목이 있는지 여부에 관계없이 쿼리가 첫 번째 테이블과 두 번째 테이블의 모든 열을 모두 표시하는 것을 볼 수 있습니다.

많은 경우에 UNION 대신 WHERE 절을 여러 조건과 함께 사용할 수 있으며 유사한 결과를 얻을 수 있다는 점도 주목할 가치가 있습니다. 하지만 UNION을 통해 기록이 더욱 간결하고 명확해 보입니다.

또한 결합된 쿼리를 작성할 때 특정 규칙을 따라야 합니다.

  • UNION 요청에는 UNION 키워드로 구분된 두 개 이상의 SELECT 연산자가 포함되어야 합니다. 즉, 요청에 4개의 SELECT 연산자가 사용된 경우 3개의 UNION 키워드가 있어야 합니다.
  • UNION 연산자의 각 쿼리에는 동일한 열, 표현식 또는 통계 함수가 있어야 하며, 또한 동일한 순서로 나열되어야 합니다.
  • 열 데이터 유형은 호환되어야 합니다. 반드시 동일한 유형일 필요는 없지만 DBMS가 명확하게 변환할 수 있도록 유사한 유형을 가져야 합니다(예를 들어 서로 다른 숫자 데이터 유형 또는 다른 날짜 유형일 수 있음).
  • 2. 반복되는 줄을 포함하거나 제외합니다.

    UNION을 사용하는 쿼리는 쿼리 결과 집합에서 모든 중복 행을 자동으로 제거합니다. 즉, 단일 SELECT 문에 여러 조건이 있는 WHERE 절처럼 동작합니다. 이는 UNION 연산자의 기본 동작이지만 원하는 경우 변경할 수 있습니다. 이를 위해 UNION 대신 UNION ALL 연산자를 사용해야 합니다.

    3. 결합된 쿼리 결과 정렬

    SELECT 문의 결과는 ORDER BY 문을 사용하여 정렬됩니다. UNION을 사용하여 쿼리를 결합하는 경우 ORDER BY 절 하나만 사용할 수 있으며, 이를 마지막 SELECT 문에 배치해야 합니다. 실제로 실제로 결과의 일부를 한 순서로 정렬하고 다른 부분을 다른 순서로 정렬하는 것은 의미가 없습니다. 따라서 다중 문장 ORDER BY은 허용되지 않습니다.