如何在 MySQL 的 INSERT INTO 命令中使用 WHERE 子句?
在插入新行的情况下,我们可以使用条件插入,即在 INSERT INTO 命令中使用 WHERE 子句。可以通过以下几种方式实现:
使用虚拟表
在这种情况下,我们根据一些条件从虚拟表中插入值。语法如下:
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)
在上面的示例中,我们创建了一个名为 'testing' 的表,并使用虚拟表 dual 以及一个条件向其中插入行。如果条件为真,MySQL 将行插入表中,否则不插入。
使用结构相同的表
如果我们想插入到一个与另一个表结构相同的表中,那么在下面的示例中演示了如何进行条件插入,即如何在 INSERT INTO 语句中使用 WHERE 子句。
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' 的行。
广告