Bài này cafedev chia sẻ cho ace về cách sử dụng Toán tử UNION trong SQL để lấy ra dữ liệu theo ý muốn của mình.

Lưu ý: Các bạn tham khảo bài giới thiệu này để lấy dữ liệu mẫu và chạy các ví dụ của toàn bộ series này nha. Khi bạn thực hành mà không tìm thấy kết quả và không xảy ra lỗi thì có thể dữ liệu của bạn không tồn tại, vì vậy, bạn có thể insert thêm data vào bảng và thực hành lại nha.

1. UNION trong SQL

Toán tử UNION được sử dụng để kết hợp tập hợp kết quả của hai hoặc nhiều câu lệnh SELECT.

  • Mỗi câu lệnh SELECT trong UNION phải có cùng số cột
  • Các cột cũng phải có kiểu dữ liệu tương tự
  • Các cột trong mỗi câu lệnh SELECT cũng phải theo cùng một thứ tự

Cú pháp UNION

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2; 

Cú pháp UNION ALL

Toán tử UNION chỉ chọn các giá trị riêng biệt theo mặc định. Để cho phép các giá trị trùng lặp, hãy sử dụng UNION ALL:

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

Lưu ý: Tên cột trong tập hợp kết quả thường bằng với tên cột trong câu lệnh SELECT đầu tiên trong UNION.

Ví dụ:

Cấu trúc các bản bạn tham khảo tạo đây.

  • Câu lệnh SQL sau trả về các thành phố (chỉ các giá trị khác biệt) từ cả bảng “Customers” và “Suppliers”:
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;

Lưu ý: Nếu một số khách hàng hoặc nhà cung cấp có cùng thành phố, mỗi thành phố sẽ chỉ được liệt kê một lần, vì UNION chỉ chọn các giá trị riêng biệt. Sử dụng UNION ALL để chọn các giá trị trùng lặp!

Ví dụ: UNION ALL

Câu lệnh SQL sau trả về các thành phố (cũng có giá trị trùng lặp) từ cả bảng “Customers” và “Suppliers”:

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;

Ví dụ: UNION với WHERE

  • Câu lệnh SQL sau trả về các thành phố của Đức (chỉ các giá trị khác biệt) từ cả bảng “Customers” và “Suppliers”:
SELECT City, Country FROM Customers
WHERE Country='VN'
UNION
SELECT City, Country FROM Suppliers
WHERE Country='VN'
ORDER BY City;

Ví dụ: UNION ALL với WHERE

  • Câu lệnh SQL sau trả về các thành phố của Đức (cũng có giá trị trùng lặp) từ cả bảng “Customers” và “Suppliers”:
SELECT City, Country FROM Customers
WHERE Country='VN'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='VN'
ORDER BY City;

Lưu ý: Các bạn tham khảo bài giới thiệu này để lấy dữ liệu mẫu và chạy các ví dụ của toàn bộ series này nha. Khi bạn thực hành mà không tìm thấy kết quả và không xảy ra lỗi thì có thể dữ liệu của bạn không tồn tại, vì vậy, bạn có thể insert thêm data vào bảng và thực hành lại nha.

Full series tự học SQL từ cơ bản tới nâng cao tại đây nha.

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!