Oracleでは、(+)はJOINの「オプション」テーブルを示します。したがって、クエリでは、
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id=b.id(+)
これは、テーブル 'b'からテーブル 'a'の左外部結合です。反対側(オプションのテーブル 'b')にデータがない場合、データを失うことなくテーブル 'a'のすべてのデータを返します。
同じクエリの最新の標準構文は次のようになります
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
LEFT JOIN b ON a.id=b.id
または省略形a.id=b.id
(すべてのデータベースでサポートされているわけではありません):
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
LEFT JOIN b USING(id)
(+)を削除すると、通常の内部結合クエリになります
Oracleと他のデータベースの両方での古い構文:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id=b.id
より現代的な構文:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
INNER JOIN b ON a.id=b.id
または単に:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
JOIN b ON a.id=b.id
「a」と「b」の両方のテーブルの「id」値が同じであるすべてのデータのみが返されます。これは共通部分を意味します。
クエリを正しい結合にしたい場合
これはLEFT JOINとまったく同じですが、オプションのテーブルを切り替えます。
古いOracle構文:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id(+)=b.id
最新の標準構文:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
RIGHT JOIN b ON a.id=b.id
参照とヘルプ:
https://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:6585774577187
Oracle 11gの+記号を使用した左外部結合
https://www.w3schools.com/sql/sql_join_left.asp