สำหรับการINNERเข้าร่วมคำสั่งไม่สำคัญ แบบสอบถามจะให้ผลลัพธ์เดียวกันตราบใดที่คุณเลือกเปลี่ยนคุณจากไปSELECT *SELECT a.*, b.*, c.*
สำหรับ ( LEFT, RIGHTหรือFULL) OUTERร่วมใช่เรื่องการสั่งซื้อ - และ ( การปรับปรุง ) สิ่งที่มีความซับซ้อนมากขึ้น
ครั้งแรกการรวมภายนอกไม่ได้สลับกันดังนั้นจึงa LEFT JOIN bไม่เหมือนกับb LEFT JOIN a
การรวมภายนอกไม่เชื่อมโยงกันดังนั้นในตัวอย่างของคุณที่เกี่ยวข้องกับคุณสมบัติทั้งสอง (การสับเปลี่ยนและการเชื่อมโยง)
a LEFT JOIN b
ON b.ab_id = a.ab_id
LEFT JOIN c
ON c.ac_id = a.ac_id
เทียบเท่ากับ :
a LEFT JOIN c
ON c.ac_id = a.ac_id
LEFT JOIN b
ON b.ab_id = a.ab_id
แต่:
a LEFT JOIN b
ON b.ab_id = a.ab_id
LEFT JOIN c
ON c.ac_id = a.ac_id
AND c.bc_id = b.bc_id
ไม่เท่ากับ :
a LEFT JOIN c
ON c.ac_id = a.ac_id
LEFT JOIN b
ON b.ab_id = a.ab_id
AND b.bc_id = c.bc_id
อีกตัวอย่างการเชื่อมโยง (หวังว่าง่ายกว่า) คิดว่านี่เป็น(a LEFT JOIN b) LEFT JOIN c:
a LEFT JOIN b
ON b.ab_id = a.ab_id -- AB condition
LEFT JOIN c
ON c.bc_id = b.bc_id -- BC condition
นี่เทียบเท่ากับa LEFT JOIN (b LEFT JOIN c):
a LEFT JOIN
b LEFT JOIN c
ON c.bc_id = b.bc_id -- BC condition
ON b.ab_id = a.ab_id -- AB condition
เพียงเพราะเรามีONเงื่อนไข"ดี" ทั้งON b.ab_id = a.ab_idและc.bc_id = b.bc_idเป็นการตรวจสอบความเท่าเทียมกันและไม่เกี่ยวข้องกับNULLการเปรียบเทียบ
คุณสามารถมีเงื่อนไขกับตัวดำเนินการอื่น ๆ หรือสิ่งที่ซับซ้อนกว่าเช่น: ON a.x <= b.xหรือON a.x = 7หรือON a.x LIKE b.xหรือON (a.x, a.y) = (b.x, b.y)และทั้งสองแบบสอบถามจะยังคงเทียบเท่า
อย่างไรก็ตามถ้าเกี่ยวข้องIS NULLหรือฟังก์ชันใด ๆที่เกี่ยวข้องกับโมฆะCOALESCE()เช่นถ้าเงื่อนไขเป็นb.ab_id IS NULLแล้วแบบสอบถามทั้งสองจะไม่เทียบเท่า
<blahblah>? คุณเข้าร่วม A ถึง B และ A ถึง C หรือคุณเข้าร่วม A ถึง B และ B ถึง C หรือไม่