ใน MySQL การเขียนอย่างไม่มีเงื่อนไขหมายถึงJOIN
INNER JOIN
กล่าวอีกนัยหนึ่งคือINNER
in INNER JOIN
เป็นทางเลือก INNER
และCROSS
เป็นคำพ้องความหมายใน MySQL เพื่อความชัดเจนฉันเขียนJOIN
หรือINNER JOIN
ถ้าฉันมีเงื่อนไขการเข้าร่วมและCROSS JOIN
ถ้าฉันไม่มีเงื่อนไข
ไวยากรณ์ได้รับอนุญาตให้เข้าร่วมได้อธิบายไว้ในเอกสาร
ตอนนี้ฉันคิดว่า JOIN แบบสแตนด์อะโลนไม่มีอะไรมากไปกว่า (เหมือนกัน) โดยใช้เครื่องหมายจุลภาคและ WHERE clauses
เอฟเฟกต์เหมือนกัน แต่ประวัติเบื้องหลังแตกต่างกัน ไวยากรณ์ของลูกน้ำมาจากมาตรฐาน ANSI-89 อย่างไรก็ตามมีปัญหาหลายประการเกี่ยวกับไวยากรณ์นี้ดังนั้นในมาตรฐาน ANSI-92 จึงมีการนำคีย์เวิร์ด JOIN มาใช้
ฉันจะขอแนะนำว่าคุณมักจะใช้ไวยากรณ์ JOIN มากกว่าจุลภาค
T1 JOIN T2 ON ...
T1, T2 WHERE ...
สามารถอ่านได้มากกว่า
- สามารถบำรุงรักษาได้มากกว่าเนื่องจากความสัมพันธ์ของตารางและตัวกรองถูกกำหนดไว้อย่างชัดเจนแทนที่จะผสมกัน
- ไวยากรณ์ JOIN สามารถแปลงเป็น OUTER JOIN ได้ง่ายกว่าไวยากรณ์ลูกน้ำ
- การผสมไวยากรณ์ของจุลภาคและ JOIN ในคำสั่งเดียวกันอาจทำให้เกิดข้อผิดพลาดที่น่าสงสัยเนื่องจากกฎลำดับความสำคัญ
- มีโอกาสน้อยที่จะสร้างผลิตภัณฑ์คาร์ทีเซียนโดยไม่ได้ตั้งใจเมื่อใช้ไวยากรณ์ JOIN เนื่องจากคำสั่งการเข้าร่วมที่ถูกลืมเนื่องจากส่วนคำสั่งการเข้าร่วมถูกเขียนถัดจากการรวมและง่ายต่อการดูว่าขาดหายไปหรือไม่