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 UnionGiả 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 MySQLTrong 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 https://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ơ | |