Toán tử UNION dùng để kết hợp 2 tập kết quả từ 2 hoặc nhiều câu lệnh SELECT. Nó sẽ loại bỏ các hàng trùng lặp trong các câu SELECT này.
Mỗi SELECT trong toán tử UNION phải có cùng số cột trong tập kết quả với kiểu dữ liệu tương ứng.
Cú pháp toán tử UNION
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kien]
UNION
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kien];
Tham số
bieu_thuc1, bieu_thuc2, … bieu_thucn: Cột hoặc giá trị tính toán muốn truy xuất.
bang: Bảng muốn lấy bản ghi. Phải có ít nhất 1 bảng trong mệnh đề FROM.
WHERE dieu_kien: Tùy chọn. Điều kiện phải thỏa mãn cho bản ghi được chọn.
Lưu ý:
- 2 câu
SELECTphải có cùng số biểu thức. - Số cột tương ứng trong mỗi
SELECTphải có cùng kiểu dữ liệu. - Toán tử
UNIONloại bỏ hàng trùng lặp. - Xem thêm toán tử
UNION ALL.
Ví dụ – trả về 1 trường thông tin
Ví dụ toán tử UNION trả về một trường từ nhiều câu SELECT (và các trường có cùng kiểu dữ liệu).
SELECT sanpham_id
FROM sanpham
UNION
SELECT sanpham_id
FROM hangtonkho;
Trong ví dụ trên, nếu bất kỳ sanpham_id nào xuất hiện ở cả bảng sanpham và hangtonkho, chỉ 1 sanpham_id xuất hiện trong tập kết quả. Nếu không muốn loại bỏ bản ghi trùng, dùng toán tử UNION ALL.
Ví dụ – dùng ORDER BY
Toán tử UNION có thể dùng mệnh đề ORDER BY để sắp xếp kết quả truy vấn.
SELECT danhba_id, danhba_ten
FROM danhba
WHERE ten_trang = 'QuanTriMang.com'
UNION
SELECT congty_id, congty_ten
FROM congty
WHERE ten_trang = 'TrangCuaBan.com'
ORDER BY 2;
Trong ví dụ này, vì tên cột trong hai câu SELECT khác nhau, dễ dàng hơn khi tham chiếu cột trong ORDER BY bằng vị trí trong tập kết quả. Ở ví dụ trên, sắp xếp kết quả theo danhba_ten / congty_ten tăng dần, theo cụm từ ORDER BY 2.
danhba_ten / congty_ten nằm ở vị trí thứ 2 trong tập kết quả.