Menu
CoddyTech

UNION và UNION ALL

Thuộc phần Vượt ra ngoài kiến thức cơ bản trong hành trình SQL của Coddy. Bài học 16 trên 27.

Bạn đã gặp UNION trong Fundamentals: nó xếp chồng hai tập kết quả lên nhau. Mặc định, nó cũng loại bỏ các phần tử trùng lặp, việc này tốn thêm một lần sắp xếp.

SELECT name FROM authors
UNION
SELECT name FROM editors

UNION ALL xếp chồng các hàng tương tự, nhưng giữ lại các hàng trùng lặp. Cách này nhanh hơn và gần như luôn là lựa chọn bạn muốn khi biết hai phía không thể tạo ra cùng một hàng, hoặc khi bạn thực sự muốn đếm từng lần xuất hiện.

SELECT name FROM authors
UNION ALL
SELECT name FROM editors

Cả hai vế phải trả về cùng số lượng cột, theo cùng thứ tự và có kiểu dữ liệu tương thích.

challenge icon

Thử thách

Dễ

Các bảng và cột hiện có:

  • online_orders: order_no, amount
  • retail_orders: ticket_no, total

Hai bảng theo dõi đơn hàng từ các kênh khác nhau, với tên cột khác nhau. Trả về một danh sách kết hợp gồm mọi đơn hàng với các cột:

  • channel: 'online' hoặc 'retail'
  • order_id: order_no từ kênh trực tuyến, ticket_no từ kênh bán lẻ
  • amount: tổng giá trị đơn hàng (từ amount hoặc total)

Giữ lại mọi hàng, không loại bỏ các hàng trùng lặp. Sắp xếp theo amount giảm dần.

Tự làm thử

-- Hai câu lệnh SELECT có cùng 3 cột, nối với nhau bằng UNION ALL
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Vượt ra ngoài kiến thức cơ bản

Tự luyện tập: Playground SQL