1. Toán tử UNION

Các toán tử UNION được sử dụng để kết hợp các tập hợp các kết quả của hai hay nhiều câu lệnh SELECT. Các câu lệnh SELECT khi sử dụng toán tử UNION đều cần phải chọn ra các cột giống nhau và các cột phải có cùng kiểu dữ liệu giống nhau.

Cú pháp toán tử UNION như sau:

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

Trong đó:

  • SELECT column_name(s) FROM table1 là câu lệnh chọn đầu tiên
  • UNION là toán tử kết hợp kết quả với câu lệnh tiếp theo
  • SELECT column_name(s) FROM table2 là câu lệnh chọn thứ hai

2. Ví dụ UNION

Dưới đây là bảng có tên KhachHang bao gồm các cột là: ID, TenKH, DiaChi, ThanhPho, SoDienThoai

ID TenKH DiaChi ThanhPho SoDienThoai
1 Nguyen Van A Tay Ho Ha Noi 0888999888
2 Nguyen Van B Quan 5 Ho Chi Minh 0988988988
3 Nguyen Van C Quan 7 Ho Chi Minh 0899899899
4 Nguyen Van D Bac Tu Liem Ha Noi 0788788788

Bảng tiếp theo dưới đây có tên NhaCungCap bao gồm các cột như sau: MaNCC, TenNCC, DiaChi, ThanhPho

MaNCC TenNCC DiaChi ThanhPho
1 Nha Cung Cap A Tu Son Bac Ninh
2 Nha Cung Cap B Thanh Thuy Phu Tho
3 Nha Cung Cap C Son Tay Ha Noi
4 Nha Cung Cap D Nghi Son Thanh Hoa

Câu lệnh SQL sau trả về các thành phố khác biệt từ cả bảng KhachHang và bảng NhaCungCap bằng toán tử UNION như sau:

SELECT ThanhPho FROM KhachHang
UNION
SELECT ThanhPho FROM NhaCungCap
ORDER BY ThanhPho;

Kết quả:

ThanhPho
Bac Ninh
Da Nang
Ha Noi
Hai Phong
Ho Chi Minh
Phu Tho
Thanh Hoa

Nếu như ta cần lấy ra  các thành phố có thể trùng lặp từ cả bảng KhachHangNhaCungCap bằng toán tử UNION ALL như sau:

SELECT ThanhPho FROM KhachHang
UNION ALL
SELECT ThanhPho FROM NhaCungCap
ORDER BY ThanhPho;

Kết quả:

ThanhPho
Bac Ninh
Da Nang
Ha Noi
Ha Noi
Ha Noi
Ha Noi
Hai Phong
Ho Chi Minh
Ho Chi Minh
Phu Tho
Thanh Hoa

Có thể sử dụng toán tử UNION để lấy ra tập hợp kết quả của 2 câu lệnh SELECT với hai cột DiaChiThanhPho trong bảng KhachHangNhaCungCap như sau:

SELECT DiaChi,ThanhPho FROM KhachHang 
UNION
SELECT DiaChi, ThanhPho FROM NhaCungCap 
ORDER BY ThanhPho;

Kết quả:

DiaChi ThanhPho
Tu Son Bac Ninh
Ngu Hanh Son Da Nang
Bac Tu Liem Ha Noi
Son Tay Ha Noi
Tay Ho Ha Noi
Ngo Quen Hai Phong
Quan 5 Ho Chi Minh
Quan 7 Ho Chi Minh
Thanh Thuy Phu Tho
Nghi Son Thanh Hoa

Kết hợp toán tử UNION với mệnh đề WHERE trong câu lệnh SELECT sau để lấy ra những ThanhPho = ‘Ha Noi’ và lấy ra tất cả địa chỉ thuộc thành phố Ha Noi trong bảng KhachHang và bảng NhaCungCap 

SELECT DiaChi,ThanhPho FROM KhachHang
WHERE ThanhPho = 'Ha Noi'
UNION 
SELECT DiaChi, ThanhPho FROM NhaCungCap 
WHERE ThanhPho = 'Ha Noi'
ORDER BY ThanhPho;

Kết quả:

DiaChi ThanhPho
Bac Tu Liem Ha Noi
Son Tay Ha Noi
Tay Ho Ha Noi

Chú ý: Trong câu lệnh SELECT đầu tiên và SELECT thứ hai, các cột phải được đặt theo một thứ tự giống nhau.