Toán tử UNION ALL được sử dụng để kết hợp tập kết quả từ 2 câu lệnh SELECT trở lên trong SQL Server.
Không giống như toán tử UNION, toán tử UNION ALL trả về tất cả các hàng từ truy vấn và không xóa các hàng trùng lặp.
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 của toán tử UNION ALL
SELECTbieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kien]
UNION ALL
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_k
ien];
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 không xóa các hàng trùng lặp.
- Xem các toán tử UNION khác
Ví dụ:trả về trường thông tin
SELECT sanpham_id
FROM sanpham
UNION ALL
SELECT sanpham_id
FROM
hangtonkho;
Ví dụ này trả về nhiều sanpham_id trong tập kết quả nếu chúng xuất hiện trong cả bảng sanpham và hangtonkho. Nếu bạn muốn xóa các bản sao, hãy sử dụng toàn bộ phần tử UNION.
Ví dụ:sử dụng ORDER BY
Toán tử UNION ALL 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 ALL
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 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ư được 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ả.