Bài đăng nổi bật

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
UNION MySQL - Hướng dẫn hoàn chỉnhUNION MySQL - Hướng dẫn hoàn 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 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ề.
UNION MySQL - Hướng dẫn hoàn 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Ả.
UNION MySQL - Hướng dẫn hoàn chỉnh

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_numberfull_names
1Janet Jones
2Janet Smith Jones
3Robert Phil
4Gloria Williams
5Leonard Hofstadter
6Sheldon Cooper
7Rajesh Koothrappali
8Leslie Winkle
9Howard Wolowitz
1667% Guilty
6Angels and Demons
4Code Name Black
5Daddy's Little Girls
7Davinci Code
2Forgetting Sarah Marshal
9Honey mooners
19movie 3
1Pirates of the Caribean 4
18sample movie
17The Great Dictator
3X-Men

Post a Comment

أحدث أقدم