ใน MySQL การเขียนอย่างไม่มีเงื่อนไขหมายถึงJOIN INNER JOINกล่าวอีกนัยหนึ่งคือINNERin 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 เนื่องจากคำสั่งการเข้าร่วมที่ถูกลืมเนื่องจากส่วนคำสั่งการเข้าร่วมถูกเขียนถัดจากการรวมและง่ายต่อการดูว่าขาดหายไปหรือไม่