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 đó:

  • 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.

-------------------#####-------------------

Lưu ý: bài viết có tham khảo hoặc dịch lại từ http://javatpoint.com.

Nguồn: freetuts.net