UNION là gì?
UNION là toán tử dùng để kết hợp các kết quả từ nhiều truy vấn SELECT thành một tập kết quả hợp nhất.
Các 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 SELECT cần đượ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 DISTINCT
SELECT `column1`,` column1 FROM `table1`
UNION DISTINCT
SELECT ` column1`,` column1` FROM `table2`;
Ở đây các hàng trùng lặp được loại bỏ và chỉ có các hàng duy nhất được trả về.
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 TẤT CẢ
SELECT `column1`,` column1` FROM `table1`
UNION ALL
SELECT ` column1`,` column1` FROM `table2`;
Ở đây các hàng trùng lặp được bao gồm và vì chúng tôi sử dụng TẤT CẢ.
Tại sao sử dụng Union
Giả sử có một lỗ hổng trong thiết kế 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 leo vào 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
- Lệ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 chứa các hàng 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ụ thực tế sử dụng bàn làm việc của MySQL
Trong myFlixDB của chúng tôi cho phép kết hợp
Member_number và full_names từ bảng Thành viên
với
movie_id và tiêu đề từ bảng phim
Chúng tôi có thể sử dụng truy vấn sau đây
SELECT `membership_number`,`full_names` FROM `members`
UNION
SELECT `movie_id`,`title` FROM `movies`;
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với myflixdb cho chúng ta các kết quả sau được hiển thị bên dưới.
membership_number | full_names |
1 | Janet Jones |
2 | Janet Smith Jones |
3 | Robert Phil |
4 | Gloria Williams |
5 | Leonard Hofstadter |
6 | Sheldon Cooper |
7 | Rajesh Koothrappali |
8 | Leslie Winkle |
9 | Howard Wolowitz |
16 | 67% Guilty |
6 | Angels and Demons |
4 | Code Name Black |
5 | Daddy's Little Girls |
7 | Davinci Code |
2 | Forgetting Sarah Marshal |
9 | Honey mooners |
19 | movie 3 |
1 | Pirates of the Caribean 4 |
18 | sample movie |
17 | The Great Dictator |
3 | X-Men |
Đăng nhận xét