MySQL ไม่รองรับ INSERT ... WHERE โดยตรง แต่สามารถทำ conditional insert ได้ 2 วิธี:
1. ใช้ตาราง Dummy (DUAL)
INSERT INTO table_name(col1, col2) SELECT val1, val2 FROM dual WHERE condition;
ตัวอย่าง
mysql> CREATE TABLE testing(id INT, item_name VARCHAR(10)); mysql> INSERT INTO testing (id, item_name) SELECT 1, 'Book' FROM Dual WHERE 1=1; Query OK, 1 row affected (0.11 sec)
ถ้าเงื่อนไขเป็นจริง จะ INSERT, ไม่จริงจะไม่ INSERT
2. ใช้ตารางที่มีโครงสร้างเหมือนกัน
mysql> INSERT INTO dummy1(id, name) SELECT id, name FROM dummy WHERE id = 1; Query OK, 1 row affected (0.06 sec) mysql> SELECT * FROM dummy; +------+--------+ | id | Name | +------+--------+ | 1 | Gaurav | | 2 | Aarav | +------+--------+ mysql> SELECT * FROM dummy1; +------+--------+ | id | Name | +------+--------+ | 1 | Gaurav | +------+--------+
คัดลอกเฉพาะแถวที่ id = 1 จาก dummy ไป dummy1