Hạn chế lớn nhất của câu lệnh SELECT có lẽ là việc chỉ có thể lấy một hoặc nhiều cột từ một bảng duy nhất. Tuy nhiên, chỉ với một từ khóa UNION, bạn hoàn toàn có thể thay đổi điều này.
1. Ý nghĩa của 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 câu lệnh SELECT. Mỗi câu lệnh SELECT với UNION phải có cùng số lượng cột, các cột phải có cùng kiểu dữ liệu, các cột trong mỗi câu lệnh SELECT phải có cùng trật tự.
- Cú pháp của UNION:
SELECT tên cột FROM bảng1
UNION
SELECT tên cột FROM bảng2
- Cú pháp của UNION ALL:
SELECT tên cột FROM bảng1
UNION ALL
SELECT tên cột FROM bảng2
Lưu ý: Tên cột trong tập kết quả thường bằng tên cột trong câu lệnh SELECT đầu tiên.
2. Ví dụ UNION
Để thực hiện ví dụ này, bạn cần nhập cơ sở dữ liệu mẫu Northwind vào SQL Server Management Studio. Hãy xem bài viết hướng dẫn ngay dưới đây:
Tham khảo: Hướng dẫn tải và cài đặt dữ liệu mẫu Northwind trong SQL Server Management Studio
Câu lệnh SQL dưới đây sẽ lấy ra các thành phố (chỉ giá trị khác nhau) từ bảng Customers và Suppliers:
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
Lưu ý: Nếu một vài 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, bởi vì toán tử UNION chỉ lấy các giá trị khác nhau. Để lấy tất cả giá trị, bao gồm cả những giá trị trùng lặp hãy sử dụng UNION ALL.
3. Ví dụ UNION ALL
Câu lệnh SQL dưới đây sẽ lấy ra các thành phố (bao gồm cả giá trị trùng lặp) từ bảng Customers và Suppliers:
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
Kết quả lúc này đã bắt đầu xuất hiện những giá trị giống nhau.
4. UNION với mệnh đề WHERE
Câu lệnh SQL dưới đây sẽ lấy ra các thành phố của nước Đức (Country=’Germany’) và chỉ giá trị khác nhau từ bảng Customers và Suppliers:
SELECT City, Country FROM Customers
WHERE Country=’Germany’
UNION
SELECT City, Country FROM Suppliers
WHERE Country=’Germany’
ORDER BY City;
5. UNION ALL với mệnh đề WHERE
Câu lệnh SQL dưới đây sẽ lấy ra các thành phố của nước Đức (Country=’Germany’) và bao gồm cả giá trị trùng lặp từ bảng Customers và Suppliers:
SELECT City, Country FROM Customers
WHERE Country=’Germany’
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country=’Germany’
ORDER BY City;
Kết quả là ở cột City đã có giá trị giống nhau xuất hiện.
6. Ví dụ UNION khác
Câu lệnh dưới đây sẽ liệt kê tất cả khách hàng và nhà cung cấp:
SELECT ‘Customer’ AS Type, ContactName, City, Country
FROM Customers
UNION
SELECT ‘Supplier’, ContactName, City, Country
FROM Suppliers;
“AS Type” truy vấn trên là một bí danh, nó cung cấp một cái tên tạm thời cho cột trong truy vấn và tồn tại trong suốt truy vấn. Vì thế, chúng ta đã tạo ra một cột có tên là “Type” để liệt kê thông tin liên hệ là “Customer” hay “Supplier”.
Tham khảo: Bí danh trong SQL
Như vậy là chúng ta đã đi qua các ví dụ về toán tử UNION, giờ đây, các bạn có thể lấy nhiều cột dữ liệu từ các bảng khác nhau trong cùng một truy vấn. Trong các nội dung tiếp theo, chúng ta sẽ tiếp tục với các hàm và toán tử còn lại trong SQL, đừng quên đón đọc tại BAC’s Blog.
Nguồn tham khảo:
https://www.w3schools.com/
Nhu cầu đào tạo doanh nghiệp
BAC là đơn vị đào tạo BA đầu tiên tại Việt Nam. Đối tác chính thức của IIBA quốc tế. Ngoài các khóa học public, BAC còn có các khóa học in house dành riêng cho từng doanh nghiệp. Chương trình được thiết kế riêng theo yêu cầu của doanh nghiệp, giúp doanh nghiệp giải quyết những khó khăn và tư vấn phát triển.
Các bài viết liên quan SQL:
Các bài viết liên quan Power BI:
- Power BI là gì?
- Chỉnh sửa và định hình dữ liệu trong Power BI Desktop
- Kết hợp dữ liệu trong Power BI Desktop
- Hướng dẫn kết nối dữ liệu trong Power BI Desktop
- Hướng dẫn tải & cài đặt Power BI trên máy tính
- Khóa học Phân tích và trực quan hóa dữ liệu với Power BI
Các bài viết liên quan:
BAC – Biên soạn và tổng hợp nội dung