Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ดำเนินการ MySQL LEFT JOIN บนสองตารางหรือไม่


ให้เราสร้างตารางสองตารางก่อนและรวมเข้ากับข้อจำกัดของคีย์ต่างประเทศ แบบสอบถามเพื่อสร้างตารางแรกมีดังนี้ −

mysql> สร้างตาราง ParentTable -> ( -> UniqueId int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> EmployeeName varchar(10) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.56 วินาที)

แทรกบางระเบียนในตารางแรกโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −

mysql> แทรกลงในค่า ParentTable(EmployeeName) ('John'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า ParentTable (EmployeeName) ('Carol'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว ( 0.32 วินาที) mysql> แทรกลงในค่า ParentTable (EmployeeName) ('Sam'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงในค่า ParentTable (EmployeeName) ('Bob'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว ( 0.19 วินาที)

ตอนนี้คุณสามารถแสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก ParentTable;

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+----------+-------------+| UniqueId | ชื่อพนักงาน |+----------+-------------+| 1 | จอห์น || 2 | แครอล || 3 | แซม || 4 | Bob |+----------+-------------+4 แถวในชุด (0.00 วินาที)

แบบสอบถามเพื่อสร้างตารางที่สองด้วยข้อจำกัดของคีย์ต่างประเทศมีดังนี้ -

mysql> สร้างตาราง ChildTable -> ( -> UniqueId int ไม่ใช่ NULL PRIMARY KEY, -> EmployeeAddress varchar(100), -> CONSTRAINT fk_uniqueId FOREIGN KEY(UniqueId) อ้างอิง ParentTable(UniqueId) -> ); ตกลงแบบสอบถาม 0 แถวที่ได้รับผลกระทบ (0.54 วินาที)

ตอนนี้แทรกบางระเบียนในตารางที่สองโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −

mysql> แทรกลงในค่า ChildTable (1,'15 West Shady Lane Starkville, MS 39759'); เคียวรีตกลง ได้รับผลกระทบ 1 แถว (0.19 วินาที)mysql> ลงในค่า ChildTable (2,'72 West Rock Creek St. Oxford, MS 38655'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงในค่า ChildTable (UniqueId) (3) ตกลงแบบสอบถาม 1 แถวได้รับผลกระทบ (0.41 วินาที) mysql> แทรกลงในค่า ChildTable (4,' 119 North Sierra St. Marysville, OH 43040');แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.16 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก ChildTable;

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+----------+----------------------------------- --------+| UniqueId | ที่อยู่พนักงาน |+----------+----------------------------- --------+| 1 | 15 West Shady Lane สตาร์ควิลล์, MS 39759 || 2 | 72 West Rock Creek St. Oxford, MS 38655 || 3 | NULL || 4 | 119 North Sierra St. Marysville, OH 43040 |+----------+--------------------------- ---------------+4 แถวในชุด (0.00 วินาที)

ให้เราเข้าร่วมตารางโดยใช้ left join แบบสอบถามมีดังนี้ −

mysql> selectParentTable.UniqueId,ParentTable.EmployeeName,ChildTable.EmployeeAddress จาก ParentTable ซ้ายเข้าร่วม -> ChildTable บน ParentTable.UniqueId=ChildTable.UniqueId;

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อน>+----------+--------------+-------------------- ----------------------------------+| UniqueId | ชื่อพนักงาน | ที่อยู่พนักงาน |+----------+--------------+--------------------- ----------------------+| 1 | จอห์น | 15 West Shady Lane สตาร์ควิลล์, MS 39759 || 2 | แครอล | 72 West Rock Creek St. Oxford, MS 38655 || 3 | แซม | NULL || 4 | บ๊อบ | 119 North Sierra St. Marysville, OH 43040 |+----------+--------------+-------------------- ------------------------------+4 แถวในชุด (0.00 วินาที)