ใน Oracle (+) หมายถึงตาราง "ทางเลือก" ใน JOIN ดังนั้นในการค้นหาของคุณ
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id=b.id(+)
มันเป็นซ้ายเข้าร่วมของตาราง 'b' เพื่อตาราง 'a' มันจะส่งคืนข้อมูลทั้งหมดของตาราง 'a' โดยไม่สูญเสียข้อมูลเมื่อด้านอื่น (ตารางตัวเลือก 'b') ไม่มีข้อมูล
ไวยากรณ์มาตรฐานที่ทันสมัยสำหรับการค้นหาเดียวกันจะเป็น
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' tables '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
Left Outer Join โดยใช้เครื่องหมาย + ใน Oracle 11g
https://www.w3schools.com/sql/sql_join_left.asp