Categories: Hỏi đáp

Toán tử UNION trong SQL Server

Toán tử UNION được dùng để kết hợp 2 bộ kết quả từ 2 hoặc nhiều lệnh SELECT. Nó sẽ xóa các hàng trùng trong các lệnh SELECT này.

Mỗi lệnh SELECT trong toán tử UNION phải có cùng số cột trong bộ kết quả với kiểu dữ liệu tương ứng.

[external_link_head]

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 muốn lấy.

bang

[external_link offset=1]

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 đáp ứng để bản ghi được chọn.

Lưu ý:

  • 2 lệnh SELECT phải có cùng số biểu thức
  • Số cột tương ứng trong mỗi 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 nhau.
  • Xem thêm toán tử UNION ALL.

Ví dụ – trả về một trường thông tin

Ví dụ toán tử UNION trả về 1 trường từ nhiề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;

Ở ví dụ trên, nếu có sanpham_id nào xuất hiện ở cả bảng sanpham và hangtonkho, thì sẽ chỉ còn 1 sanpham_id xuất hiện trong bộ kết quả. Nếu không muốn loại bỏ bản ghi trùng, hãy dùng toán tử UNION ALL.

Ví dụ – dùng ORDER BY

[external_link offset=2]

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;

Ở ví dụ này, vì tên cột ở 2 lệnh SELECT khác nhau nên sẽ dễ hơn khi tham chiếu tới cột trong lệnh ORDER BY bằng vị trí trong bộ kết quả. Trong ví dụ trên, ta lọc kết quả theo danhba_ten / congty_ten theo thứ tự tăng dần, như đã nói bằng cụm từ ORDER BY 2.

danhba_ten / congty_ten nằm ở vị trí thứ 2 trong bộ kết quả.

Bài trước: Lệnh DELETE TOP trong SQL Server

Bài sau: Toán tử UNION ALL trong SQL Server[external_footer]

Recent Posts

Tầm nhìn đầy tham vọng của Hideo Kojima: Tạo ra những trò chơi gây ấn tượng với người ngoài hành tinh

Nhà sáng tạo trò chơi điện tử nổi tiếng Hideo Kojima được nhiều game thủ…

4 tuần ago

Chính thức rồi! Sự kết hợp giữa Magic: The Gathering và Final Fantasy vào năm 2025

Gần đây, Square Enix đã công bố một dự án hợp tác thú vị với…

4 tuần ago

Giá của Assassin’s Creed Shadows Collector’s Edition bất ngờ giảm

Kể từ khi trò chơi được công bố chính thức, nó đã bị bao phủ…

1 tháng ago

Nhà phát triển Tekken 8 xin lỗi và chấp nhận lời chỉ trích của game thủ

Nhà phát triển của Tekken 8 đã xin lỗi và chấp nhận những ý kiến…

1 tháng ago

Các game thủ đối mặt với thử thách từ Great Ape Vegeta trong trò chơi Dragon Ball Sparking! Zero

Trò chơi Dragon Ball mới nhất, có tên gọi Dragon Ball Sparking! Zero, đã được…

1 tháng ago

Thổ Nhĩ Kỳ Cấm Ứng Dụng Discord Theo Sau Nga

Xu hướng cấm ứng dụng Discord tại một số quốc gia đang tiếp diễn. Sau…

1 tháng ago