Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ความแตกต่างระหว่าง Left, Right และ Full Outer Join

บทความนี้อธิบายความแตกต่างระหว่าง 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 JOINMatch เท่านั้นทั้งหมดLeft ที่ไม่ Match
FULL OUTER JOINทั้งหมดทั้งหมดไม่มี

หมายเหตุ: MySQL ไม่รองรับ FULL OUTER JOIN โดยตรง ต้องใช้ UNION ของ LEFT และ RIGHT JOIN แทน