MySQL UNION – Hướng dẫn đầy đủ
Liên minh là gì?
Các hiệp hội kết hợp các kết quả từ nhiều truy vấn CHỌN thành một tập hợp kết quả hợp nhất.
Yêu cầu duy nhất để tính năng này hoạt động là số lượng cột phải giống nhau đối với 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ờ hãy tạo truy vấn UNION để kết hợp cả hai bảng bằng DISTINCT
SELECT column1, column2 FROM `table1` UNION DISTINCT SELECT column1,column2 FROM `table2`;
Ở đây các hàng trùng lặp sẽ bị xóa và chỉ những 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 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 cách sử dụng ALL
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 nên sử dụng Công đoàn?
Giả sử có lỗi 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 loại bỏ mọi bản ghi trùng lặp khỏi bảng mới. Bạn có thể sử dụng UNION trong những trường hợp như vậy.
Tổng kết
- Lệnh UNION được sử dụng để kết hợp nhiều kết quả truy vấn SELECT thành một truy vấn duy nhất chứa các hàng từ tất cả các truy vấn chọn.
- Số cột và kiểu dữ liệu trong 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 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 MySQL bàn làm việc
Trong myFlixDB của chúng tôi, hãy 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 ta có thể sử dụng truy vấn sau
SELECT `membership_number`,`full_names` FROM `members` UNION SELECT `movie_id`,`title` FROM `movies`;
Thực thi đoạn script trên trong MySQL bàn làm việc so với myflixdb cung cấp cho chúng ta kết quả như 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 |




