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

SQL LEFT JOIN: คู่มือฉบับสมบูรณ์

SQL LEFT JOIN เป็นประเภทหนึ่งของ SQL join คืนทุกแถวจากคอลัมน์ "ซ้าย" ที่ระบุ และแถวที่ตรงเงื่อนไขในคอลัมน์ "ขวา"

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

ใน SQL เรียกว่า join Joins ช่วยดึงข้อมูลจากหลายตารางและรวมเป็นตารางที่ join แล้ว เช่น join ตาราง employees และ departments เพื่อได้ชื่อแผนกของแต่ละพนักงาน

ในบทช่วยสอนนี้ เราจะแยกวิเคราะห์ประเภท join หนึ่งใน SQL: LEFT JOIN เราจะพูดถึงกรณีที่ LEFT JOIN มีประโยชน์ และวิธีใช้ในคิวรี่ SQL

SQL LEFT JOIN

SQL LEFT JOIN คืนทุกเรคอร์ดจากตาราง "ซ้าย" ที่ระบุในคิวรี่ จับคู่ค่าจากตารางนี้ตามเงื่อนไขของคุณกับตาราง "ขวา" แถวที่จับคู่ได้จะคืนค่าพร้อมกับทุกเรคอร์ดจากตาราง "ซ้าย" LEFT JOINs เป็นประเภทหนึ่งของ SQL outer join

เช่น ใช้ left join เพื่อได้รายชื่อแผนกของแต่ละพนักงาน จะเห็นพนักงานทุกคนแม้บางคนจะยังไม่มีแผนก

ไวยากรณ์พื้นฐานของ LEFT JOIN:

SELECT Table1.Column1, Table2.Column1 FROM Table1 LEFT JOIN Table2 ON Table1.Column2 = Table1.Column2;

เริ่ม join ด้วยคำสั่ง SQL SELECT ตารางในคำสั่ง FROM คือตาราง "ซ้าย" จากนั้นใช้คีย์เวิร์ด LEFT JOIN ระบุตาราง "ขวา"

ใช้คำสั่ง ON กำหนดเงื่อนไขเชื่อมตาราง LEFT JOINS เป็น outer join จึงอาจเห็นเรียกว่า left outer joins

ตัวอย่าง LEFT JOIN SQL

สมมติต้องการรายชื่อแผนกที่แต่ละพนักงานทำงาน ดึงข้อมูลในคิวรี่เดียว คิวรี่:

SELECT employees.name, employees.title, company_departments.name AS DeptName FROM employees LEFT JOIN company_departments ON employees.department_id = company_departments.department_id;

คิวรี่คืน 7 เรคอร์ด:

nametitledeptname
LukeSales AssociateSales
MikeSales AssociateSales
HannahSales AssociateSales
GeoffSenior Sales AssociateSales
AlexisSales AssociateSales
EmmaMarketing DirectorMarketing
JonahVice President of SalesExecutive

(7 แถว)

บรรทัดแรก: ระบุต้องการ 3 คอลัมน์ ชื่อพนักงาน ตำแหน่ง และชื่อแผนก AS DeptName บอกให้คอลัมน์ชื่อแผนกเรียกว่า DeptName

บรรทัดถัดไป: ระบุดึงข้อมูลจากตาราง employees สร้าง LEFT JOIN กับ company_departments บรรทัดสุดท้าย: เชื่อม 2 ตารางด้วยค่าที่เหมือนกัน: department_id

LEFT JOINS คืนทุกแถวจากตารางซ้าย และแถวจากตารางขวาที่ตรงเงื่อนไข join เท่านั้น

ถ้ามีพนักงาน department_id = 9 แต่แผนกนั้นไม่มีอยู่จริง พวกเขาจะยังปรากฏในคิวรี่ ถ้ามีแผนกที่ไม่มีอยู่จริง จะไม่ปรากฏใน JOIN query

ลองรันคิวรี่เดิมอีกครั้ง แต่เพิ่มพนักงานใหม่ในฐานข้อมูล ข้อมูลพนักงานใหม่:

nametitledepartment_id
AdamSenior Sales Associate9

(1 แถว)

Department ID 9 ไม่อยู่ในตาราง company_departments แต่เมื่อรัน left join query เดิม Adam ยังรวมอยู่ เพราะเราใช้ LEFT JOIN ผลลัพธ์:

nametitledeptname
LukeSales AssociateSales
MikeSales AssociateSales
HannahSales AssociateSales
GeoffSenior Sales AssociateSales
AlexisSales AssociateSales
EmmaMarketing DirectorMarketing
JonahVice President of SalesExecutive
AdamSenior Sales Associate

สรุป

SQL LEFT JOINs สืบค้นมากกว่า 1 ตารางและคืนทุกแถวจากตาราง "ซ้าย" ที่ระบุ พร้อมแถวจากตารางขวาที่ตรงเงื่อนไข JOIN

เช่น ต้องการรายชื่อลูกค้าและชื่อแผนความภักดีที่สมัคร หากชื่อแผนอยู่ในตารางอื่น ใช้ left join ดึงได้

เราเขียนคู่มือ How to Learn SQL ช่วยผู้เรียนพัฒนาทักษะ SQL มีรายการแหล่งเรียนรู้ชั้นนำและคำแนะนำจากผู้เชี่ยวชาญ ดูได้ที่หน้า How to Learn SQL