UNION vs UNION ALL
Coddy SQL 여정의 심화 과정 섹션에 포함된 레슨 — 27개 중 16번째.
여러분은 기초(Fundamentals) 과정에서 UNION을 만났습니다. 이것은 두 결과 집합을 서로 위에 쌓습니다. 기본적으로 중복을 제거하며, 이로 인해 추가적인 정렬 비용이 발생합니다.
SELECT name FROM authors
UNION
SELECT name FROM editorsUNION ALL은 동일한 방식으로 데이터를 쌓지만 중복을 유지합니다. 두 데이터 집합에서 동일한 행이 생성되지 않는다는 것을 알고 있거나, 각 발생 횟수를 실제로 계산하고 싶을 때 더 빠르며 거의 항상 권장되는 방식입니다.
SELECT name FROM authors
UNION ALL
SELECT name FROM editors양쪽 모두 동일한 수의 열을 동일한 순서로, 호환되는 타입으로 반환해야 합니다.
챌린지
쉬움사용 가능한 테이블 및 컬럼:
<strong>online_orders</strong>:<strong>order_no</strong>,<strong>amount</strong><strong>retail_orders</strong>:<strong>ticket_no</strong>,<strong>total</strong>
두 테이블은 서로 다른 컬럼명을 사용하여 각기 다른 채널의 주문을 추적합니다. 다음 컬럼들을 포함하여 모든 주문을 하나로 합친 리스트를 반환하세요:
channel:'online'또는'retail'order_id: online의order_no, retail의ticket_noamount: 주문 합계 (amount또는total에서 가져옴)
모든 행을 유지하세요 (중복 제거 없음). amount를 기준으로 내림차순 정렬하세요.
치트 시트
UNION은 두 결과 집합을 쌓고 중복을 제거합니다 (더 느림). UNION ALL은 결과 집합을 쌓고 중복을 유지합니다 (더 빠름):
SELECT name FROM authors
UNION ALL
SELECT name FROM editors양쪽 모두 열의 개수가 같아야 하고, 순서가 동일해야 하며, 호환되는 타입이어야 합니다. 열 이름은 첫 번째 SELECT에서 가져옵니다.
직접 해보기
-- UNION ALL로 결합된, 동일한 3개의 컬럼으로 정렬된 두 개의 SELECT 문
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.