เมื่อใดควรใช้ MySQL Self Join และตัวอย่าง

When Use Mysql Self Join



MySQL Self-Join เป็นประเภทของ SQL Join ที่ให้คุณเข้าร่วมตารางด้วยตัวเอง มันทำงานโดยใช้การรวมประเภทอื่น ๆ เช่น inner หรือ left join clause เพื่อรวมแถวตามเงื่อนไขที่ระบุ

บทช่วยสอนนี้จะแสดงให้คุณเห็นถึงวิธีการใช้ MySQL self-join เพื่อรวมตารางเข้ากับตัวมันเองและสร้างข้อมูลที่กำหนดเอง







การใช้งานพื้นฐาน

MySQL self-join ใช้นามแฝงของตารางเพื่อให้แน่ใจว่าคุณจะไม่ทำซ้ำตารางเดียวกันมากกว่าหนึ่งครั้งในคำสั่งเดียว



บันทึก: หากคุณไม่คุ้นเคยกับนามแฝงของตาราง ให้พิจารณาบทช่วยสอนอื่นๆ ของเราที่อธิบายแนวคิดทั้งหมด



ไวยากรณ์ทั่วไปสำหรับการใช้ self-join จะคล้ายกับรูปแบบหนึ่งเมื่อรวมสองตารางเข้าด้วยกัน อย่างไรก็ตาม เราใช้นามแฝงของตาราง พิจารณาแบบสอบถามที่แสดงด้านล่าง:





เลือก alias1.cols,alias2.cols จาก tbl1 นามแฝง1,tbl2 นามแฝง2 ที่ไหน [สภาพ]

ตัวอย่างการใช้งานกรณี

ลองใช้ตัวอย่างเพื่อทำความเข้าใจวิธีการเข้าร่วม MySQL ด้วยตนเอง สมมติว่าคุณมีฐานข้อมูลที่มีข้อมูลต่อไปนี้ (ดูแบบสอบถามแบบเต็มด้านล่าง)

หยด สคีมา ถ้า มีอยู่ ตัวเอง;
สร้าง สคีมา ตัวเอง;
ใช้ ตัวเอง;
สร้าง ตาราง ผู้ใช้(
NS INT คีย์หลัก AUTO_INCREMENT ,
ชื่อจริง VARCHAR (255),
อีเมล VARCHAR (255),
payment_id INT ,
สมัครสมาชิก INT
);
แทรก เข้าไปข้างใน ผู้ใช้(ชื่อจริง,อีเมล,payment_id,สมัครสมาชิก) ค่านิยม ('วาเลอรี จี. ฟิลลิป', ' [ป้องกันอีเมล] ', 10001, 1), ('ฌอน อาร์ สตอรี่ส์', ' [ป้องกันอีเมล] ', 10005, 2), ('บ็อบบี้ เอส. นิวซัม', ' [ป้องกันอีเมล] ', 100010, 5);

เราจะเริ่มต้นด้วยการเข้าร่วม INNER และสุดท้ายคือการเข้าร่วมทางซ้าย



เข้าร่วมด้วยตนเองโดยใช้ Inner Join

แบบสอบถามด้านล่างดำเนินการเข้าร่วม INNER บนตารางที่สร้างขึ้นด้านบน

เลือก อัล1.* จาก ผู้ใช้ al1 ด้านใน เข้าร่วม ผู้ใช้ al2 บน al1.สมัครสมาชิก=al2.สมัครสมาชิก สั่งโดย NS รายละเอียด ;

ผลลัพธ์ที่แสดงด้านล่าง:

เข้าร่วมด้วยตนเองโดยใช้ Left Join

ตัวอย่างแบบสอบถามด้านล่างอธิบายวิธีที่เราสามารถใช้ self join กับ left join

เลือก ( CONCAT (al1.first_name, '->',al2.email)) เช่น รายละเอียด,al1.payment_id จาก ผู้ใช้ al1 ซ้าย เข้าร่วม ผู้ใช้ al2 บน al1.id=al2.id;

ผลลัพธ์ที่ได้คือด้านล่าง:

บทสรุป

คู่มือนี้จะอธิบายวิธีการใช้ MySQL self join เพื่อเข้าร่วมตารางด้วยตัวเอง

ขอบคุณสำหรับการอ่าน.