Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Lấy tên duy nhất từ hai cột và gộp vào một cột với UNION trong MySQL


Giới thiệu

Để lấy các giá trị duy nhất (distinct) từ hai cột khác nhau và gộp thành một danh sách đơn, dùng UNION (mặc định loại trùng) thay vì UNION ALL (giữ trùng).

Ví dụ minh họa

Tạo bảng và chèn dữ liệu

mysql> CREATE TABLE DemoTable (
    Name1 VARCHAR(100),
    Name2 VARCHAR(100)
);
mysql> INSERT INTO DemoTable VALUES 
('Adam', 'Bob'), ('Adam', 'Bob'), ('David', 'Chris');

Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+-------+-------+
| Name1 | Name2 |
+-------+-------+
| Adam  | Bob   |
| Adam  | Bob   |
| David | Chris |
+-------+-------+

Truy vấn UNION

mysql> SELECT Name1 FROM DemoTable 
UNION 
SELECT Name2 FROM DemoTable;

Kết quả (đã loại trùng, sắp xếp mặc định)

+-------+
| Name1 |
+-------+
| Adam  |
| David |
| Bob   |
| Chris |
+-------+

UNION vs UNION ALL

Đặc điểmUNIONUNION ALL
Xử lý trùng lặpLoại bỏ (DISTINCT)Giữ lại tất cả
Hiệu năngChậm hơn (phải sort/unique)Nhanh hơn
Thứ tựCó sắp xếpGiữ thứ tự truy vấn

Mở rộng: Thêm cột nguồn

SELECT Name1 AS Name, 'Name1' AS Source FROM DemoTable
UNION
SELECT Name2, 'Name2' FROM DemoTable;

Kết quả sẽ có cột Source cho biết tên đến từ cột nào.