Liên hệ
sql

Kết hợp dữ liệu với UNION trong SQL

Sử dụng UNION hoặc UNION ALL để kết hợp dữ liệu từ nhiều câu lệnh SELECT trong SQL

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

Kết quả

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

Bạn có thể thực hành các câu lệnh SQL ví dụ trên CSDL mẫu SQLite có sẵn tại SQLite và thực hành lệnh 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

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

Vui lòng đăng ký ủng hộ kênh