เราสามารถใช้ 'การเข้าร่วมแบบไขว้' โดยไม่มีเงื่อนไข Cross join ให้ผลลัพธ์ในรูปแบบผลิตภัณฑ์คาร์ทีเซียน ตัวอย่างเช่น หากในตารางหนึ่งมี 3 ระเบียนและอีกตารางมี 2 ระเบียน ระเบียนแรกจะตรงกับระเบียนตารางที่สองทั้งหมด จากนั้น กระบวนการเดียวกันจะถูกทำซ้ำสำหรับบันทึกที่สองเป็นต้น
ตัวอย่างการโยงข้าม
การสร้างตารางแรก
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> SELECT ForeignTableDemo.Id, ForeignTableDemo.Name, PrimaryTableDemo.Address -> จาก ForeignTableDemo -> ข้ามเข้าร่วม PrimaryTableDemo;
นี่คือผลลัพธ์
<ก่อนหน้า>+------+------+---------+| รหัส | ชื่อ | ที่อยู่ |+------+------+---------+| 1 | จอห์น | สหรัฐอเมริกา || 2 | บ๊อบ | สหรัฐอเมริกา || 1 | จอห์น | สหราชอาณาจักร || 2 | บ๊อบ | สหราชอาณาจักร || 1 | จอห์น | Unknown || 2 | บ๊อบ | Unknown |+------+------+---------+6 แถวในชุด (0.00 วินาที)