เข้าร่วมกับภายในเข้าร่วมและเต็มรูปแบบเข้าร่วมด้านนอก


27

ฉันรู้ว่ามีความแตกต่างระหว่างINNER JOINและFULL OUTER JOINผมสามารถมองเห็นได้ แต่สิ่งที่แตกต่างระหว่างทั้งสองต่อไปนี้: JOIN ... ON...และINNER JOIN...ON...และยังคงยังJOIN...ON...VSFULL OUTER JOIN...ON...

เหตุผลที่เป็นฉันคิดว่าอาจจะใช้เพียงแค่JOINmessing up แบบสอบถามที่ฉันทำงานที่มีการโพสต์บนดังนั้นเชื่อมโยงไปยังคำถามที่นี่

ดังนั้นโดยพื้นฐานแล้วอะไรคือความแตกต่างทางไวยากรณ์ระหว่างชุดปฏิบัติการจริงของตัวเอง

ขอขอบคุณ,


1
"Cross การโพสต์" กำลังโพสต์คำถามเดียวกันในฟอรั่มที่แตกต่างกัน การโพสต์ลิงก์นั้นใช้ได้และเป็นที่ต้องการ
choroba

ตกลงฉันจะโพสต์ลิงก์ไปยังคำถามรหัสของฉันกลับมาซ้ำซ้อนกันมากมายและมันทำให้ฉันบ้า ... ฉันยังไม่มีกาแฟตอนเช้าเลยฮ่า ๆ
MCP_infiltrator

4
@MCP_infiltrator ลองดูคำอธิบายที่ดีที่สุดน่าจะเป็น: codinghorror.com/blog/2007/10/…
mkk

หากปัญหาจริงคือรหัสของคุณคืนมาซ้ำซ้อนมากเกินไปคุณอาจต้องถามคำถามอื่นซึ่งเป็นประเด็นหลัก และคุณอาจต้องการโพสต์รหัสของคุณ เมื่อฉันช่วยคนที่มีปัญหาซ้ำซ้อนในอดีตมักจะเกิดจากเงื่อนไขการเข้าร่วมที่ไม่ถูกต้องหรือบางครั้งเนื่องจากการแมปไม่ดีระหว่างตัวแบบข้อมูล SQL และตัวแบบข้อมูลเชิงสัมพันธ์
วอลเตอร์ Mitty

สวัสดี @WalterMitty คำถามถูกโพสต์ใน SO ฉันคิดว่าการเข้าร่วมของฉันเป็นปัญหา แต่ในอีกหมายเหตุหนึ่งฉันก็แค่อยากรู้อยากเห็นฉันเพียงแค่ใช้เวลา 6 เดือนในการเขียน SQL และการสอนด้วยตนเองลิงก์อยู่ในคำถาม
MCP_infiltrator

คำตอบ:


33

JOINและINNER JOINเหมือนกันคำหลักด้านในเป็นตัวเลือกเนื่องจากการรวมทั้งหมดจะถือว่าเป็นการรวมภายในเว้นแต่จะระบุไว้เป็นอย่างอื่น ความแตกต่างระหว่างJOINและFULL OUTER JOINเป็นเช่นเดียวกับความแตกต่างระหว่างและINNER JOINFULL OUTER JOIN

An INNER JOINจะส่งคืนแถวที่ตรงกันเท่านั้นหากแถวในตาราง A ตรงกับหลายแถวในตาราง B ตารางแถว A จะถูกทำซ้ำกับแถวตาราง B แต่ละแถวและในทางกลับกัน

A FULL OUTER JOINจะคืนค่าทุกอย่างที่การรวมภายในทำและส่งคืนแถวที่ไม่ตรงกันทั้งหมดจากแต่ละตาราง


5
ขอบคุณผมไม่ทราบว่าJOINและINNER JOINเป็นงบเทียบเท่า
MCP_infiltrator

7
แนวทางปฏิบัติที่ดีที่สุดคือการเขียน INNER JOIN อย่างชัดเจนเพื่อหลีกเลี่ยงความสับสน
Neil
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.