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

จะใช้ Straight Join ใน MySQL ได้อย่างไร?


เข้าร่วมโดยตรงใน MySQL ทำงานเหมือนเข้าร่วมภายในหรือเข้าร่วม ซึ่งหมายความว่าจะส่งกลับเฉพาะแถวที่ตรงกัน ประการแรก เราต้องเข้าใจ Straight join ใน MySQL สำหรับสิ่งนั้น เราจำเป็นต้องสร้างสองตารางและเชื่อมโยงทั้งสองตารางด้วยข้อจำกัดของคีย์ภายนอก

นี่คือตารางแรก

mysql> สร้างตาราง ForeignTableDemo-> (-> Id int,-> ชื่อ varchar(100),-> FK int-> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.47 วินาที)

นี่คือตารางที่สอง −

mysql> สร้างตาราง PrimaryTableDemo-> (-> FK int,-> Address varchar(100),-> primary key(FK)-> );Query OK, 0 แถวได้รับผลกระทบ (0.47 วินาที)

หลังจากนั้น เราจะเพิ่มข้อจำกัด -

mysql> แก้ไขตาราง ForeignTableDemo เพิ่มข้อจำกัด FKConst foreign key(FK) อ้างอิงPrimaryTableDemo(FK); ตกลง ตกลง 0 แถวได้รับผลกระทบ (1.54 วินาที) บันทึก:0 รายการซ้ำ:0 คำเตือน:0

ตอนนี้เพิ่มระเบียนลงในตารางที่สอง -

mysql> INSERT เป็นค่า PrimaryTableDemo (1,'US');Query OK, 1 แถวได้รับผลกระทบ (0.10 วินาที)mysql> INSERT เป็นค่า PrimaryTableDemo (2,'UK');Query OK, 1 แถวได้รับผลกระทบ (0.14 วินาที )mysql> INSERT ลงในค่า PrimaryTableDemo (3,'Unknown');Query OK, 1 แถวได้รับผลกระทบ (0.08 วินาที)

การแสดงบันทึก

mysql> SELECT * จาก PrimaryTableDemo;

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

<ก่อนหน้า>+----+---------+| FK | ที่อยู่ |+---+---------+| 1 | สหรัฐอเมริกา || 2 | สหราชอาณาจักร || 3 | Unknown |+----+---------+3 แถวในชุด (0.00 วินาที)

ตอนนี้ เพิ่มระเบียนลงในตารางแรก

mysql> INSERT เป็นค่า ForeignTableDemo (1,'John',1);Query OK, 1 แถวได้รับผลกระทบ (0.20 วินาที)mysql> INSERT เป็นค่า ForeignTableDemo (2,'Bob',2); แบบสอบถามตกลง 1 แถว ได้รับผลกระทบ (0.27 วินาที)

แสดงระเบียนทั้งหมดโดยใช้คำสั่ง SELECT -

mysql> SELECT * จาก ForeignTableDemo;

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

<ก่อนหน้า>+------+------+------+| รหัส | ชื่อ | FK |+------+------+------+| 1 | จอห์น | 1 || 2 | บ๊อบ | 2 |+------+------+------+2 แถวในชุด (0.00 วินาที)

แบบสอบถามสำหรับการรวมตรงมีดังต่อไปนี้ที่แสดงเฉพาะแถวที่ตรงกัน -

mysql>เลือก ForeignTableDemo.Id, ForeignTableDemo.Name, PrimaryTableDemo.Address-> จาก ForeignTableDemo-> Straight_join PrimaryTableDemo-> บน ForeignTableDemo.FK=PrimaryTableDemo.FK;

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

<ก่อนหน้า>+------+------+---------+| รหัส | ชื่อ | ที่อยู่ |+------+------+---------+| 1 | จอห์น | สหรัฐอเมริกา || 2 | บ๊อบ | สหราชอาณาจักร |+------+------+---------+2 แถวในชุด (0.00 วินาที)