Union là gì?
Truy vấn Union kết hợp các kết quả từ nhiều truy vấn chọn thành một tập kết quả hợp nhất.
Yêu cầu duy nhất để làm việc này là số lượng cột phải giống nhau từ tất cả các truy vấn Chọn “Select” được kết hợp.
Giả sử chúng ta có hai bảng như sau
Bây giờ chúng ta hãy tạo một truy vấn UNION để kết hợp cả hai bảng bằng câu lệnh DISTINCT
Ở đây các hàng trùng lặp được loại bỏ và chỉ còn các hàng duy nhất được
Lưu ý: MySQL sử dụng mệnh đề Distinct làm mặc định khi thực hiện các truy vấn Union nếu không có gì được chỉ định.
Bây giờ chúng ta hãy tạo một truy vấn Union để kết hợp cả hai bảng bằng “All”
Kết quả các hàng trùng lặp đã được bao gồm và vì chúng ta sử dụng “All”.
Tại sao nên sử dụng Union
Giả sử có một sai sót trong cơ sở dữ liệu của bạn và bạn đang sử dụng hai bảng khác nhau cho cùng một mục đích. Bạn muốn hợp nhất hai bảng này thành một trong khi bỏ qua bất kỳ bản ghi trùng lặp nào từ việc tạo ra bảng mới. Bạn có thể sử dụng Union trong những trường hợp như vậy.
Tóm lược
- Mệnh đề Union được sử dụng để kết hợp nhiều kết quả truy vấn “Chọn” vào một truy vấn duy nhất từ tất cả các truy vấn được chọn.
- Số lượng cột và kiểu dữ liệu trong các câu lệnh Chọn phải giống nhau để lệnh Union hoạt động.
- Mệnh đề Distinct được sử dụng để loại bỏ các giá trị trùng lặp khỏi tập kết quả truy vấn Union. MySQL sử dụng mệnh đề Distinct làm mặc định khi thực hiện các truy vấn Union nếu không có gì được chỉ định.
- Mệnh đề All được sử dụng để trả về tất cả các hàng trùng lặp trong truy vấn Union.
Ví dụ sử dụng trong MySQL
Trong myFlixDB của chúng ta cho phép kết hợp
Member_number và full_names từ bảng Member
Với
movie_id và tiêu đề từ bảng movie
Chúng ta có thể sử dụng truy vấn sau đây
Chạy đoạn mã trên chúng ta được kết quả sau
Ngoài ra bạn có thể truy cập ngay //gitiho.com/ để tìm hiểu thêm nhiều các khóa học hay về tin học văn phòng: Excel, Power Point, lập trình VBA, lập trình C#, SQL, thiết kế đồ họa… Có rất nhiều ưu đãi hấp dẫn đang chờ bạn.
Các bạn có thể tham khảo thêm các bài viết khác về cách sử dụng MySQL:
Hướng dẫn sử dụng câu lệnh SELECT trong MySQL qua các ví dụ
Hướng dẫn câu lệnh DELETE trong MySQL và ví dụ minh họa
Hướng dẫn cách dùng mệnh đề WHERE trong MySQL
Nguyễn Thụy Tố Quyên
Hậu Giang UNION và UNION ALL được dùng để gộp tập kết quả của hai hay nhiều câu lệnh truy vấn dữ liệu (SELECT) lại với nhau.
Hồ Nguyễn Minh Thư
- Đồng Tháp
- Trương Khắc Tâm
Sinh viên
An Giang
- Trà Vinh
- Thứ tự cột trong các câu lệnh SELECT phải được sắp xếp theo đúng thứ tự cột của cái bảng kết hợp.
- Các cột tương ứng giữa các câu lệnh SELECT phải có kiểu dữ liệu giống nhau.
- Dưới đây là cú pháp sử dụng toán tử UNION:
SELECT column1, column2, column3, . . . . FROM table1 WHERE condition UNION SELECT column1, column2, column3, . . . . FROM table2 WHERE condition;- Dưới đây là cú pháp sử dụng toán tử UNION ALL:
SELECT column1, column2, column3, . . . . FROM table1 WHERE condition UNION ALL SELECT column1, column2, column3, . . . . FROM table2 WHERE condition;3) Tham khảo một số ví dụ
- Trong bài học này, tôi sẽ sử dụng hai cái bảng Customers & SinhVien như bên dưới để làm ví dụ minh họa.
CustomerID | CustomerName | Gender | Age | City |
1 | Nguyễn Thành Nhân | Nam | 22 | Cần Thơ |
2 | Nguyễn Thụy Tố Quyên | Nữ | 23 | Hậu Giang |
3 | Hồ Nguyễn Minh Thư | Nữ | 25 | Hậu Giang |
4 | Hồ Nguyễn Minh Thư | Nam | 20 | Cần Thơ |
Nguyễn Thụy Tố Quyên | Nữ | Hậu Giang | Hồ Nguyễn Minh Thư | Đồng Tháp |
1 | Hồ Nguyễn Minh Thư | Nữ | 19 | Hậu Giang |
2 | Nguyễn Thành Nhân | Nam | 20 | Cần Thơ |
3 | Nguyễn Thụy Tố Quyên | Nam | 18 | Cần Thơ |
Nguyễn Thụy Tố Quyên
Nữ
SELECT CustomerName, Age, City FROM Customers WHERE City = "Cần Thơ" UNION ALL SELECT HoTen, Tuoi, ThanhPho FROM SinhVien WHERE ThanhPho = "Cần Thơ";Hậu Giang
CustomerName | Age | City |
Nguyễn Thành Nhân | 22 | Cần Thơ |
Hồ Nguyễn Minh Thư | 20 | Cần Thơ |
Nguyễn Thụy Tố Quyên | 18 | Cần Thơ |
Nguyễn Thụy Tố Quyên
Nữ
Hậu Giang
SELECT CustomerName AS C1, Age AS C2, City AS C3 FROM Customers WHERE City = "Cần Thơ" UNION ALL SELECT HoTen, Tuoi, ThanhPho FROM SinhVien WHERE ThanhPho = "Cần Thơ";Hậu Giang
Hồ Nguyễn Minh Thư | Đồng Tháp | Trương Khắc Tâm |
Nguyễn Thành Nhân | 22 | Cần Thơ |
Hồ Nguyễn Minh Thư | 20 | Cần Thơ |
Nguyễn Thụy Tố Quyên | 18 | Cần Thơ |
Nguyễn Thụy Tố Quyên
Nữ
SELECT CustomerName AS HỌ_TÊN, Age AS TUỔI, City AS THÀNH_PHỐ FROM Customers UNION ALL SELECT HoTen, Tuoi, ThanhPho FROM SinhVien ORDER BY TUỔI DESC;Hậu Giang
Hồ Nguyễn Minh Thư | Đồng Tháp | Trương Khắc Tâm |
Hồ Nguyễn Minh Thư | 25 | Hậu Giang |
Nguyễn Thụy Tố Quyên | 23 | Hậu Giang |
Nguyễn Thành Nhân | 22 | Cần Thơ |
Hồ Nguyễn Minh Thư | 20 | Cần Thơ |
Nguyễn Thành Nhân | 20 | Cần Thơ |
Hồ Nguyễn Minh Thư | 19 | Hậu Giang |
Nguyễn Thụy Tố Quyên | 18 | Cần Thơ |
Nguyễn Thụy Tố Quyên
Nữ
SELECT CustomerName AS HỌ_TÊN FROM Customers UNION SELECT HoTen FROM SinhVien;Hậu Giang
Hồ Nguyễn Minh Thư |
Nguyễn Thành Nhân |
Nguyễn Thụy Tố Quyên |
Hồ Nguyễn Minh Thư |
Hồ Nguyễn Minh Thư |
Nguyễn Thụy Tố Quyên |
Nguyễn Thụy Tố Quyên
Nữ
SELECT "Khách hàng" AS PHÂN_LOẠI, CustomerName AS HỌ_TÊN, Age AS TUỔI, City AS THÀNH_PHỐ FROM Customers UNION SELECT "Sinh viên", HoTen, Tuoi, ThanhPho FROM SinhVien;Hậu Giang
Hồ Nguyễn Minh Thư | Hồ Nguyễn Minh Thư | Đồng Tháp | Trương Khắc Tâm |
MSSV | Nguyễn Thành Nhân | 22 | Cần Thơ |
MSSV | Nguyễn Thụy Tố Quyên | 23 | Hậu Giang |
MSSV | Hồ Nguyễn Minh Thư | 25 | Hậu Giang |
MSSV | Hồ Nguyễn Minh Thư | 20 | Cần Thơ |
Nguyễn Thụy Tố Quyên | Hồ Nguyễn Minh Thư | 19 | Hậu Giang |
Nguyễn Thụy Tố Quyên | Nguyễn Thành Nhân | 20 | Cần Thơ |
Nguyễn Thụy Tố Quyên | Nguyễn Thụy Tố Quyên | 18 | Cần Thơ |