Toán tử UNION ALL trong Oracle
Trong Oracle ngoài UNION ra chúng ta còn một toán tử có chức năng tương tự đó là UNION ALL.
Toán tử UNION ALL có cùng đặc điểm với UNION là dùng để gộp kết quả của 2 lệnh select lại với nhau, tuy nhiên sự khác biệt nhất là nó không xóa đi các phần tử bị trùng mà sẽ giữ lại tất cả.
1. Cú pháp toán tử UNION ALL trong Oracle
Sau đây là cú pháp của UNION ALL.
SELECT expression1, expression2, ... expression_n FROM table1 WHERE conditions UNION ALL SELECT expression1, expression2, ... expression_n FROM table2 WHERE conditions;
Trong đó:
Bài viết này được đăng tại [free tuts .net]
- expression1, expression2, expression_n là các column sẽ được chọn
- table1, table2 là các table cần lấy dữ liệu
- conditions là điều kiện của lệnh where (nếu có)
Bạn chỉ cần quan tâm đến một điều là UNION ALL sẽ đặt ở giữa hai lệnh select là được.
2. Ví dụ sử dụng UNION ALL
Giả sử mình có bảng suppliers
và order_details
, sau đó mình thực hiện câu truy vấn sau để lấy danh sách supplier_id
ở cả hai bảng và gộp lại với nhau trong một câu truyvấn duy nhất.
SELECT supplier_id FROM suppliers UNION ALL SELECT supplier_id FROM order_details;
Và với dữ liệu cho sẵn thì giả sử kết quả nó sẽ hiển thị như hình dưới đây.
Như bạn thấy dữ liệu có trùng nhưng nó vẫn giữ lại tất cả, đây là sự khác biệt so với UNION.
2. Lời kết
Theo cá nhân mình thấy thì toán tử UNION này rất ít khi sử dụng, tuy nhiên Oracle vẫn cung cấp cho chúng ta bởi trong một số trường hợp có thể cần dùng đến.
Bài tiếp theo chúng ta sẽ tìm hiểu toán tử INTERSECT.