Toán tử MySQL UNION
Toán tử MySQL UNION
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
SELECT
câu lệnh.
- Mọi
SELECT
câu lệnh bên trongUNION
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
SELECT
câu lệnh 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;
UNION ALL Cú pháp
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
:
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
Lưu ý: Tên cột trong tập kết quả thường bằng tên cột trong SELECT
câu lệnh đầu tiên.
Cơ sở dữ liệu Demo
Trong hướng dẫn này, chúng tôi sẽ sử dụng cơ sở dữ liệu mẫu Northwind nổi tiếng.
Dưới đây là lựa chọn từ bảng "Khách hàng":
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
Và lựa chọn từ bảng "Nhà cung cấp":
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | London | EC1 4SD | UK |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA |
Ví dụ về SQL UNION
Câu lệnh SQL sau trả về các thành phố (chỉ các giá trị riêng biệt) từ cả bảng "Khách hàng" và "Nhà cung cấp":
Thí dụ
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. Cũng sử dụng
UNION ALL
để chọn các giá trị trùng lặp!
Ví dụ về SQL 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 "Khách hàng" và "Nhà cung cấp":
Thí dụ
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
UNION SQL 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 "Khách hàng" và "Nhà cung cấp":
Thí dụ
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
UNION SQL TẤT CẢ 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 "Khách hàng" và "Nhà cung cấp":
Thí dụ
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
Một ví dụ khác về UNION
Câu lệnh SQL sau liệt kê tất cả khách hàng và nhà cung cấp:
Thí dụ
SELECT 'Customer' AS Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers;
Lưu ý "Loại AS" ở trên - nó là một bí danh. Bí danh SQL được sử dụng để đặt tên tạm thời cho bảng hoặc cột. Bí danh chỉ tồn tại trong thời gian truy vấn. Vì vậy, ở đây chúng tôi đã tạo một cột tạm thời có tên "Loại", liệt kê danh sách người liên hệ là "Khách hàng" hay "Nhà cung cấp".