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

Toán tử UNION ALL trong SQL Server

Toán tử UNION ALL dùng để kết hợp tập kết quả từ 2 hoặc nhiều câu lệnh SELECT trong SQL Server.

Khác với 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 loại bỏ hàng trùng lặp.

Mỗi SELECT trong toán tử UNION ALL 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 ALL

SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kien]
UNION ALL
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 ý:

  1. 2 câu SELECT phải có cùng số biểu thức.
  2. Số cột tương ứng trong mỗi SELECT phải có cùng kiểu dữ liệu.
  3. Toán tử UNION ALL không loại bỏ hàng trùng lặp.
  4. Xem thêm toán tử UNION.

Ví dụ – trả về 1 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 ở cả sanpham và hangtonkho. Nếu muốn xóa trùng lặp, dùng toán tử UNION.

Ví dụ – dùng ORDER BY

Toán tử UNION ALL 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 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 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ả.