Trong Oracle, (+) biểu thị bảng "tùy chọn" trong THAM GIA. Vì vậy, trong truy vấn của bạn,
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id=b.id(+)
đó là một THAM GIA TRÊN TRÁI PHIẾU của bảng 'b' sang bảng 'a'. Nó sẽ trả về tất cả dữ liệu của bảng 'a' mà không mất dữ liệu khi phía bên kia (bảng tùy chọn 'b') không có dữ liệu.
Cú pháp tiêu chuẩn hiện đại cho cùng một truy vấn sẽ là
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
LEFT JOIN b ON a.id=b.id
hoặc với một tốc ký cho a.id=b.id
(không được hỗ trợ bởi tất cả các cơ sở dữ liệu):
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
LEFT JOIN b USING(id)
Nếu bạn xóa (+) thì đó sẽ là truy vấn nối bên trong bình thường
Cú pháp cũ hơn, trong cả Oracle và các cơ sở dữ liệu khác:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id=b.id
Cú pháp hiện đại hơn:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
INNER JOIN b ON a.id=b.id
Hoặc đơn giản:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
JOIN b ON a.id=b.id
Nó sẽ chỉ trả về tất cả dữ liệu trong đó cả hai giá trị 'a' & 'b' id 'đều giống nhau, có nghĩa là phần chung.
Nếu bạn muốn làm cho truy vấn của mình trở thành Tham gia đúng
Điều này giống như một TRÁI PHIẾU, nhưng chuyển đổi bảng nào là tùy chọn.
Cú pháp cũ của Oracle:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id(+)=b.id
Cú pháp tiêu chuẩn hiện đại:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
RIGHT JOIN b ON a.id=b.id
Tham khảo & giúp đỡ:
https://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:6585774577187
Bên trái Tham gia bằng cách sử dụng dấu + trong Oracle 11g
https://www.w3schools.com/sql/sql_join_left.asp