บทความนี้อธิบายความแตกต่างระหว่าง Left Outer Join, Right Outer Join, และ Full Outer Join
Left Outer Join
- ดึงทุกแถวจากตารางซ้าย (Left Table)
- เทียบเท่า:
Inner Join + แถวที่ไม่ Match จากตารางซ้าย - ข้อมูลที่ไม่ Match ตารางขวา -> NULL
SELECT column_1, column_2, ... FROM table_1 LEFT OUTER JOIN table_2 ON table_1.matching_column = table_2.matching_column
Right Outer Join
- ดึงทุกแถวจากตารางขวา (Right Table)
- เทียบเท่า:
Inner Join + แถวที่ไม่ Match จากตารางขวา - ข้อมูลที่ไม่ Match ตารางซ้าย -> NULL
SELECT column_1, column_2, ... FROM table_1 RIGHT OUTER JOIN table_2 ON table_1.matching_column = table_2.matching_column
Full Outer Join
- ดึงทุกแถวจากทั้งสองตาราง
- เทียบเท่า:
Inner Join + ไม่ Match ซ้าย + ไม่ Match ขวา - ไม่สูญเสียข้อมูลใดๆ
SELECT column_1, column_2, ... FROM table_1 FULL OUTER JOIN table_2 ON table_1.matching_column = table_2.matching_column
สรุปเปรียบเทียบ
| Join Type | แถวจาก Left | แถวจาก Right | ข้อมูลที่สูญเสีย |
|---|---|---|---|
| LEFT OUTER JOIN | ทั้งหมด | Match เท่านั้น | Right ที่ไม่ Match |
| RIGHT OUTER JOIN | Match เท่านั้น | ทั้งหมด | Left ที่ไม่ Match |
| FULL OUTER JOIN | ทั้งหมด | ทั้งหมด | ไม่มี |
หมายเหตุ: MySQL ไม่รองรับ FULL OUTER JOIN โดยตรง ต้องใช้ UNION ของ LEFT และ RIGHT JOIN แทน