Toán tử UNION trong MySQL dùng để kết hợp tập kết quả của 2 hoặc nhiều câu lệnh SELECT. Nó loại bỏ các hàng trùng lặp giữa các SELECT. Mỗi SELECT trong UNION phải có cùng số cột và kiểu dữ liệu tương tự.
Cú pháp
SELECT expression1, expression2, ... expression_n
FROM table [WHERE conditions]
UNION [DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM table [WHERE conditions]
Tham số:
- expression1...expression_n: các cột muốn lấy.
- table: bảng nguồn.
- WHERE condition: tùy chọn, điều kiện lọc.
- DISTINCT: tùy chọn, loại trùng, nhưng UNION mặc định đã loại trùng nên từ khóa này không thay đổi kết quả.
Ví dụ
Hai bảng Student_detail và Student_info:
mysql> Select * from Student_detail;
+-----------+---------+------------+------------+
| studentid | Name | Address | Subject |
+-----------+---------+------------+------------+
| 101 | YashPal | Amritsar | History |
| 105 | Gaurav | Chandigarh | Literature |
| 130 | Ram | Jhansi | Computers |
| 132 | Shyam | Chandigarh | Economics |
| 133 | Mohan | Delhi | Computers |
| 150 | Rajesh | Jaipur | Yoga |
| 160 | Pradeep | Kochi | Hindi |
+-----------+---------+------------+------------+
7 rows in set (0.00 sec)
mysql> Select * from Student_info;
+-----------+-----------+------------+-------------+
| studentid | Name | Address | Subject |
+-----------+-----------+------------+-------------+
| 101 | YashPal | Amritsar | History |
| 105 | Gaurav | Chandigarh | Literature |
| 130 | Ram | Jhansi | Computers |
| 132 | Shyam | Chandigarh | Economics |
| 133 | Mohan | Delhi | Computers |
| 165 | Abhimanyu | Calcutta | Electronics |
+-----------+-----------+------------+-------------+
6 rows in set (0.00 sec)
Truy vấn UNION lấy studentid từ cả hai bảng:
mysql> Select Studentid FROM student_detail UNION SELECT Studentid FROM student_info;
+-----------+
| Studentid |
+-----------+
| 101 |
| 105 |
| 130 |
| 132 |
| 133 |
| 150 |
| 160 |
| 165 |
+-----------+
8 rows in set (0.00 sec)
Kết quả 8 giá trị duy nhất (đã loại trùng 101,105,130,132,133).