Mệnh đề kết hợp dữ liệu UNION trong SQL
Trong SQL bạn có thể kết hợp các dữ liệu có cấu trúc giống nhau từ nhiều bảng thành một khi truy vấn bằng toán tử UNION và UNION ALL. Các bảng này có khi trong cùng một CSDL, có khi ở các CSDL khác nhau.
- UNION kết hợp lại nhưng loại bỏ trùng nhau.
- UNION ALL kết hợp lại nhưng không loại bỏ trùng nhau.
Ở bài viết này, Quantrimang sẽ hướng dẫn chi tiết cách sử dụng mệnh đề UNION trong SQL với cú pháp và những ví dụ cụ thể để bạn dễ hình dung và nắm bắt câu lệnh tốt hơn.
UNION trong SQL
Mệnh đề/Toán tử UNION trong SQL được sử dụng để kết hợp kết quả của hai hoặc nhiều lệnh SELECT mà không trả về bất cứ bản ghi trùng lặp nào.
Để sử dụng UNION, mỗi lệnh SELECT phải có số cột giống nhau, cùng số biểu thức của các cột, cùng kiểu dữ liệu, và cột tương ứng phải theo đúng thứ tự tuy nhiên không cần có cùng chiều dài.
Cú pháp UNION trong SQL
Cú pháp cơ bản của mệnh đề UNION như sau:
SELECT cot1 [, cot2 ]FROM bang1 [, bang2 ][WHERE dieu_kien]UNIONSELECT cot1 [, cot2 ]FROM bang1 [, bang2 ][WHERE dieu_kien]
Tại đây, dieu_kien đã cho có thể là bất kỳ biểu thức nào dựa theo yêu cầu của bạn.
Ví dụ về UNION trong SQL
Giả sử hai bảng là NHANVIEN và TIENTHUONG có các bản ghi sau:
Bảng 1: NHANVIEN
+----+----------+-----+-----------+----------+ | ID | TEN |TUOI | DIACHI | LUONG | +----+----------+-----+-----------+----------+ | 1 | Thanh | 32 | Haiphong | 2000.00 | | 2 | Loan | 25 | Hanoi | 1500.00 | | 3 | Nga | 23 | Hanam | 2000.00 | | 4 | Manh | 25 | Hue | 6500.00 | | 5 | Huy | 27 | Hatinh | 8500.00 | | 6 | Cao | 22 | HCM | 4500.00 | | 7 | Lam | 24 | Hanoi | 10000.00 | +----+----------+-----+-----------+----------+
Bảng 2: TIENTHUONG
+-----+---------------------+-------------+--------+ |TT_ID| NGAY | NHANVIEN_ID | SOTIEN | +-----+---------------------+-------------+--------+ | 102 | 2019-01-08 00:00:00 | 3 | 3000 | | 100 | 2019-01-08 00:00:00 | 3 | 1500 | | 101 | 2019-02-20 00:00:00 | 2 | 1560 | | 103 | 2018-12-20 00:00:00 | 4 | 2060 | +-----+---------------------+-------------+--------+
Bây giờ chúng ta kết hợp hai bảng này trong lệnh SELECT như sau:
SQL> SELECT ID, TEN, SOTIEN, NGAYFROM NHANVIENLEFT JOIN TIENTHUONGON NHANVIEN.ID = TIENTHUONG.NHANVIEN_IDUNIONSELECT ID, TEN, SOTIEN, NGAYFROM NHANVIENRIGHT JOIN TIENTHUONGON NHANVIEN.ID = TIENTHUONG.NHANVIEN_ID;
Kết quả trả về là:
+------+----------+--------+---------------------+ | ID | TEN | SOTIEN | NGAY | +------+----------+--------+---------------------+ | 1 | Thanh | NULL | NULL | | 2 | Loan | 1560 | 2019-02-20 00:00:00 | | 3 | Nga | 3000 | 2019-01-08 00:00:00 | | 3 | Nga | 1500 | 2019-01-08 00:00:00 | | 4 | Manh | 2060 | 2018-12-20 00:00:00 | | 5 | Huy | NULL | NULL | | 6 | Cao | NULL | NULL | | 7 | Lam | NULL | NULL | +------+----------+--------+---------------------+
UNION ALL trong SQL
Mệnh đề/Toán tử UNION ALL trong SQL được sử dụng để kết hợp kết quả của hai hoặc nhiều lệnh SELECT bao gồm cả các bản ghi trùng lặp.
Các quy tắc áp dụng cho UNION cũng áp dụng cho toán tử UNION ALL.
Cú pháp UNION ALL trong SQL
Cú pháp cơ bản của mệnh đề UNION ALL như sau:
SELECT cot1 [, cot2 ]FROM bang1 [, bang2 ][WHERE dieu_kien]UNION ALLSELECT cot1 [, cot2 ]FROM bang1 [, bang2 ][WHERE dieu_kien]
Tại đây, dieu_kien đã cho có thể là bất kỳ biểu thức nào dựa theo yêu cầu của bạn.
Ví dụ về UNION ALL trong SQL
Giả sử hai bảng là NHANVIEN và TIENTHUONG có các bản ghi sau:
Bảng 1: NHANVIEN
+----+----------+-----+-----------+----------+ | ID | TEN |TUOI | DIACHI | LUONG | +----+----------+-----+-----------+----------+ | 1 | Thanh | 32 | Haiphong | 2000.00 | | 2 | Loan | 25 | Hanoi | 1500.00 | | 3 | Nga | 23 | Hanam | 2000.00 | | 4 | Manh | 25 | Hue | 6500.00 | | 5 | Huy | 27 | Hatinh | 8500.00 | | 6 | Cao | 22 | HCM | 4500.00 | | 7 | Lam | 24 | Hanoi | 10000.00 | +----+----------+-----+-----------+----------+
Bảng 2: TIENTHUONG

Bây giờ chúng ta kết hợp hai bảng này trong lệnh SELECT như sau:
SQL> SELECT ID, TEN, SOTIEN, NGAY
FROM NHANVIEN
LEFT JOIN TIENTHUONG
ON NHANVIEN.ID = TIENTHUONG.NHANVIEN_ID
UNION ALL
SELECT ID, TEN, SOTIEN, NGAY
FROM NHANVIEN
RIGHT JOIN TIENTHUONG
ON NHANVIEN.ID = TIENTHUONG.NHANVIEN_ID;
Kết quả trả về là:
+------+----------+--------+---------------------+ | ID | TEN | SOTIEN | NGAY | +------+----------+--------+---------------------+ | 1 | Thanh | NULL | NULL | | 2 | Loan | 1560 | 2019-02-20 00:00:00 | | 3 | Nga | 3000 | 2019-01-08 00:00:00 | | 3 | Nga | 1500 | 2019-01-08 00:00:00 | | 4 | Manh | 2060 | 2018-12-20 00:00:00 | | 5 | Huy | NULL | NULL | | 6 | Cao | NULL | NULL | | 7 | Lam | NULL | NULL | | 3 | Nga | 3000 | 2019-01-08 00:00:00 | | 3 | Nga | 1500 | 2019-01-08 00:00:00 | | 2 | Loan | 1560 | 2019-02-20 00:00:00 | | 4 | Manh | 2060 | 2018-12-20 00:00:00 | +------+----------+--------+---------------------+
Ngoài ra, có hai mệnh đề khác/toán tử tương tự như mệnh đề UNION là:
- Mệnh đề INTERSECT trong SQL: được sử dụng để kết hợp hai câu lệnh SELECT, nhưng trả về các hàng chỉ từ câu lệnh SELECT đầu tiên giống với một dòng trong câu lệnh SELECT thứ hai.
- Mệnh đề EXCEPT trong SQL: được sử dụng để kết hợp hai lệnh SELECT và trả về các hàng từ lệnh SELECT đầu tiên mà không được trả về bởi lệnh SELECT thứ hai.
Ở các bài tiếp theo, Quantrimang sẽ cùng bạn thảo luận về giá trị NULL trong SQL. Các bạn nhớ theo dõi nhé!
Bạn nên đọc
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:
Cũ vẫn chất
-

Cách chụp ảnh màn hình cuộn, màn hình dài trong Windows
Hôm qua -

Cách tải file trên Google Drive bị chặn tải xuống
Hôm qua 6 -

Tắt mật khẩu Windows 10 khi đăng nhập chỉ 10 giây
Hôm qua -

Hướng dẫn quản lý file tải xuống trên Telegram
Hôm qua -

16 phần mềm đọc file PDF miễn phí tốt nhất
Hôm qua -

Cách kích hoạt Ultimate Performance để tối ưu hiệu suất trên Windows 10/11
Hôm qua -

Công thức tính tỉ số thể tích các khối đa diện
Hôm qua -

Cách tạo vị trí giả, fake GPS trên iPhone
Hôm qua -

Hướng dẫn in hai mặt giấy trong Word, PDF, Excel cho máy in hỗ trợ 2 mặt, 1 mặt
Hôm qua -

Cách tải driver Realtek High Definition Audio cho Windows 11
Hôm qua
Học IT
Công nghệ
Microsoft Word 2013
Microsoft Word 2007
Microsoft Excel 2019
Microsoft Excel 2016
Microsoft PowerPoint 2019
Google Sheets
Lập trình Scratch
Bootstrap
Hướng dẫn
Ô tô, Xe máy