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

MySQL เลือกแบบสอบถามเพื่อเลือกแถวจากตารางที่ไม่ได้อยู่ในตารางอื่น?


สำหรับตัวอย่างของเรา เราจะสร้างตารางสองตารางและใช้ Natural Left Join เพื่อรับแถวจากตารางที่ไม่มีอยู่ในตารางที่สอง

การสร้างตารางแรก

mysql> สร้างตาราง FirstTableDemo -> ( -> id int, -> name varchar(100) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.48 วินาที)

กำลังแทรกระเบียนลงในตารางแรก

mysql> แทรกลงในค่า FirstTableDemo (1,'Bob'), (2,'John'), (3,'Carol'); ตกลง ตกลง 3 แถว (0.13 วินาที) บันทึก:3 รายการซ้ำ:0 คำเตือน :0

เพื่อแสดงรายการทั้งหมด

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

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

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

กำลังสร้างตารางที่สอง

mysql> สร้างตาราง SecondTableDemo -> ( -> id int, -> name varchar(100) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.62 วินาที)

กำลังแทรกระเบียนลงในตารางที่สอง

mysql> แทรกลงในค่า SecondTableDemo (1,'Bob'), (2,'John'); แบบสอบถามตกลง ได้รับผลกระทบ 2 แถว (0.12 วินาที) บันทึก:2 รายการซ้ำ:0 คำเตือน:0

เพื่อแสดงรายการทั้งหมด

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

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

<ก่อนหน้า>+------+------+| id | ชื่อ |+------+------+| 1 | บ๊อบ || 2 | จอห์น |+------+------+

ต่อไปนี้เป็นรูปแบบการเลือกแถวที่ไม่ได้อยู่ในตารางที่สอง

mysql> SELECT tbl1.* -> FROM FirstTableDemo tbl1 -> NATURAL LEFT JOIN SecondTableDemo tbl2 -> โดยที่ tbl2.name เป็นค่าว่าง

ต่อไปนี้เป็นผลลัพธ์ที่แสดงแถวที่อยู่ในตารางแรก แต่ไม่ใช่ในตารางที่สอง เช่น “แครอล”

<ก่อนหน้า>+------+-------+| id | ชื่อ |+------+-------+| 3 | Carol |+------+------- +1 แถวในชุด (0.03 วินาที)