如何在 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' 的行。

更新時間: 2020年6月20日

6K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.