在 MySQL 中如何执行插入操作如果表为空?


您可以使用子查询来执行插入操作,前提是表为空。为此,可以使用子查询的 not exists 条件。

以下语法仅在您的表为空时有效。如果您的表不为空,则不会插入记录。语法如下所示

INSERT INTO yourTableName(yourColumnName)
SELECT ‘anyValue’
WHERE NOT EXISTS (SELECT *FROM yourTableName);

为了理解上述语法,让我们创建一个表。创建表的查询如下所示

mysql> create table ExecuteInsertDemo
   -> (
   -> Name varchar(20)
   -> );
Query OK, 0 rows affected (0.67 sec)

让我们使用 insert 命令在表中插入记录。插入记录的查询如下所示

mysql> insert into ExecuteInsertDemo values('John');
Query OK, 1 row affected (0.19 sec)

假设我们的表不为空,它只有一条记录。如果您执行 insert 命令,则 MySQL 不会将该记录插入表中。

执行插入操作的查询如下所示

mysql> insert into ExecuteInsertDemo(Name)
   -> select 'Larry'
   -> where not exists (select *from ExecuteInsertDemo);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0

使用 select 语句显示记录。查询如下所示

mysql> select *from ExecuteInsertDemo;

以下是输出

+------+
| Name |
+------+
| John |
+------+
1 row in set (0.00 sec)

您需要从表中删除记录才能运行上面看到的查询。使用 truncate 命令。查询如下所示

mysql> truncate table ExecuteInsertDemo;
Query OK, 0 rows affected (1.10 sec)

运行以上查询以执行插入命令。查询如下所示

mysql> insert into ExecuteInsertDemo(Name)
   -> select 'Larry'
   -> where not exists (select *from ExecuteInsertDemo);
Query OK, 1 row affected (0.33 sec)
Records: 1 Duplicates: 0 Warnings: 0

使用 select 从表中显示记录。查询如下所示

mysql> select *from ExecuteInsertDemo;

以下是输出

+-------+
| Name  |
+-------+
| Larry |
+-------+
1 row in set (0.00 sec)

查看示例输出,当表为空时,“Larry”已成功插入。

更新于: 2019年7月30日

2K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告