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 KhachHang và NhaCungCap 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 DiaChi và ThanhPho trong bảng KhachHang và NhaCungCap 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.