Toán tử UNION được sử dụng để kết hợp 2 tập kết quả từ 2 câu lệnh SELECT trở lên. Nó sẽ xóa các hàng giống nhau trong các câu lệnh 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];
Tên biến hoặc giá trị biến
bieu_thuc1, bieu_thuc2 ,. bieu_thucn
Cột hoặc giá trị tính toán bạn muốn truy xuất.
trạng thái
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. Các điều kiện phải đáp ứng cho bản ghi đã chọn.
Lưu ý:
- 2 câu lệnh SELECT phải có cùng số lượng biểu thức
- Số cột tương ứng trong mỗi câu lệnh SELECT phải có cùng kiểu dữ liệu
- Toán tử UNION xóa các hàng trùng lặp.
-
Xem thêm các toán tử UNION ALL.
Ví dụ:trả về trường thông tin
Ví dụ:toán tử UNION trả về một trường từ nhiều câu lệnh 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 trong cả bảng sanpham và hangtonkho, thì chỉ có 1 sanpham_id xuất hiện trong tập kết quả. Nếu bạn không muốn xóa bản ghi trùng lặp, hãy sử dụng toán tử UNION ALL.
Ví dụ:sử dụng ORDER BY
Toán tử UNION có thể sử 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 B
Y 2;
Trong ví dụ này, vì tên cột trong hai câu lệnh SELECT khác nhau, nên việc tham chiếu đến cột trong câu lệnh ORDER BY theo vị trí trong tập kết quả sẽ dễ dàng hơn. Trong ví dụ trên, chúng tôi lọc kết quả theo namba_ten / congty_ten theo thứ tự tăng dần, như đã nêu trong cụm từ ORDER BY 2.
danhba_ten / congty_ten nằm ở vị trí thứ hai trong tập kết quả.