Kết hợp dữ liệu UNION

Đôi khi, bạn có thể cần kết hợp dữ liệu mà chúng có cấu trúc giống nhau từ nhiều bảng thành một khi truy vấn. Các bảng này có khi trong cùng một CSDL, có khi ở các CSDL khác nhau, thậm chí là ở các server khác nhau.

Thực hiện nhiệm vụ này có toán tử UNIONUNION ALL

  • UNION kết hợp lại nhưng loại bỏ trùng nhau
  • UNION ALL kết hợp lại nhưng không loại bỏ trùng nhau

UNION dùng để kết hợp các kết quả của các câu SELECT lại với nhau. Các câu SELECT cần có số cột giống nhau, cột tương ứng theo thứ tự phải cùng kiểu dữ liệu

Ví dụ lấy tên từ bảng Customers và Suppliers có loại bỏ tên trùng nhau (giữ lại duy nhất 1)

SELECT City, 'Customers' as FromTable FROM Customers
UNION
SELECT City,  'Suppliers' as FromTable  FROM Suppliers
ORDER BY City
Chạy thử

Kết quả

City FromTable
Aachen Customers
Albuquerque Customers
Anchorage Customers
Ann Arbor Suppliers
Annecy Suppliers
Barcelona Customers

Ở đây có một file CSDL mẫu dạng SQLite, bạn có thể tải về nghiên cứu, thực hành: CSDL SQLite mẫu. Hoặc sử dụng trực tiếp công cụ Online: Chạy SQL

Trong trường hợp kết hợp mà không muốn loại bỏ trùng nhau thì dùng UNION ALL

SELECT City, 'Customers' as FromTable FROM Customers
UNION ALL
SELECT City,  'Suppliers' as FromTable  FROM Suppliers
ORDER BY City
Chạy thử

Trong câu lệnh SELECT sử dụng UNION có thể sử dụng WHERE

Ví dụ lấy tất cả tên các thành phố từ Germany

SELECT City, 'Customers' as FromTable FROM Customers WHERE Country='Germany'
UNION
SELECT City,  'Suppliers' as FromTable  FROM Suppliers WHERE Country='Germany'
ORDER BY City
Chạy thử
Đăng ký theo dõi ủng hộ kênh