เราสามารถใช้ Conditional insert เช่น WHERE clause พร้อมคำสั่ง INSERT INTO ในกรณีของการแทรกแถวใหม่ สามารถทำได้ด้วยวิธีดังต่อไปนี้ -
ด้วยความช่วยเหลือของตารางจำลอง
ในกรณีนี้ เราแทรกค่าจากตารางจำลองพร้อมกับเงื่อนไขบางประการ ไวยากรณ์สามารถเป็นดังนี้ −
INSERT INTO table_name(column1,column2,column3,…) Select value1,value2,value3,… From dual WHERE [conditional predicate];
ตัวอย่าง
mysql> Create table testing(id int, item_name varchar(10)); Query OK, 0 rows affected (0.15 sec) mysql> Insert into testing (id,item_name)Select 1,'Book' From Dual Where 1=1; Query OK, 1 row affected (0.11 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> Select * from testing; +------+-----------+ | id | item_name | +------+-----------+ | 1 | Book | +------+-----------+ 1 row in set (0.00 sec)
ในตัวอย่างข้างต้น เราได้สร้างตาราง 'การทดสอบ' และสำหรับการแทรกแถวเข้าไปนั้น เราได้ใช้ตารางจำลองแบบคู่พร้อมเงื่อนไข หากเงื่อนไขเป็นจริง MySQL ให้แทรกแถวลงในตาราง มิฉะนั้น ไม่
ด้วยความช่วยเหลือของตารางโครงสร้างเดียวกัน
หากเราต้องการแทรกในตารางที่มีโครงสร้างเหมือนกับตารางอื่น ในตัวอย่างต่อไปนี้จะแสดงให้เห็นว่าเราสามารถแทรกแบบมีเงื่อนไขได้อย่างไร เช่น เราจะใช้ WHERE clause กับคำสั่ง INSERT INTO ได้อย่างไร
mysql> Insert into dummy1(id,name)select id, name from dummy Where id =1; Query OK, 1 row affected (0.06 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> select * from dummy; +------+--------+ | id | Name | +------+--------+ | 1 | Gaurav | | 2 | Aarav | +------+--------+ 2 rows in set (0.00 sec) mysql> select * from dummy1; +------+--------+ | id | Name | +------+--------+ | 1 | Gaurav | +------+--------+ 1 row in set (0.00 sec)
ในตัวอย่างข้างต้น เราได้แทรกค่าในตาราง 'dummy1' ซึ่งมีโครงสร้างเหมือนกับตาราง 'dummy' โดยมีเงื่อนไขให้แทรกเฉพาะแถวนั้นโดยที่ 'id =1'