คุณสามารถดำเนินการแทรกหากตารางว่างเปล่าโดยใช้แบบสอบถามย่อย สำหรับสิ่งนั้น ให้ทำงานกับเงื่อนไขไม่มีอยู่ด้วยแบบสอบถามย่อย
ไวยากรณ์ด้านล่างจะทำงานเมื่อตารางของคุณว่างเปล่าเท่านั้น หากตารางของคุณไม่ว่างเปล่า ตารางนั้นจะไม่แทรกระเบียน ไวยากรณ์มีดังนี้:
INSERT INTO yourTableName(yourColumnName)SELECT 'anyValue'WHERE NOT EXISTS (เลือก *จาก yourTableName);
เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้:
mysql> สร้างตาราง ExecuteInsertDemo -> ( -> Name varchar(20) -> );Query OK, 0 แถวได้รับผลกระทบ (0.67 วินาที)
ให้เราแทรกบันทึกในตารางโดยใช้คำสั่งแทรก แบบสอบถามที่จะแทรกบันทึกมีดังนี้:
mysql> แทรกลงในค่า ExecuteInsertDemo ('John'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.19 วินาที)
สมมุติว่าโต๊ะของเราไม่ว่าง มันมีบันทึกเดียวเท่านั้น หากคุณรันคำสั่ง insert แล้ว MySQL จะไม่ป้อนบันทึกนั้นในตาราง
แบบสอบถามที่จะดำเนินการแทรกมีดังนี้:
mysql> แทรกลงใน ExecuteInsertDemo (ชื่อ) -> เลือก 'Larry' -> ที่ไม่มีอยู่ (เลือก * จาก ExecuteInsertDemo); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.00 วินาที) บันทึก:0 รายการซ้ำ:0 คำเตือน:0ก่อน>แสดงบันทึกโดยใช้คำสั่ง select แบบสอบถามมีดังนี้:
mysql> เลือก *จาก ExecuteInsertDemo;ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+------+| ชื่อ |+------+| John |+------+1 แถวในชุด (0.00 วินาที)
คุณต้องลบบันทึกออกจากตารางเพื่อเรียกใช้แบบสอบถามที่เราเห็นด้านบน ใช้คำสั่งตัดทอน แบบสอบถามมีดังนี้:
mysql> ตัดทอนตาราง ExecuteInsertDemo; Query OK, 0 แถวได้รับผลกระทบ (1.10 วินาที)
เรียกใช้แบบสอบถามด้านบนเพื่อดำเนินการแทรกคำสั่ง แบบสอบถามมีดังนี้:
mysql> แทรกลงใน ExecuteInsertDemo(Name) -> เลือก 'Larry' -> ที่ไม่มีอยู่ (เลือก * จาก ExecuteInsertDemo); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.33 วินาที) บันทึก:1 รายการซ้ำ:0 คำเตือน:0ก่อน>แสดงบันทึกจากตารางโดยใช้การเลือก แบบสอบถามมีดังนี้:
mysql> เลือก *จาก ExecuteInsertDemo;ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+-------+| ชื่อ |+-------+| Larry |+-------+1 แถวในชุด (0.00 วินาที)
ดูเอาต์พุตตัวอย่าง 'Larry' ถูกแทรกสำเร็จเมื่อตารางว่างเปล่า