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

MySQL UNIONMySQL UNION

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ề.

Liên minh khác biệt

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Ả.

Liên minh-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

Tóm tắt bài viết này với: