如果 MySQL 中的表为空,则执行 INSERT?
mysqlmysqli database
如果表为空,您可以借助子查询执行插入。为此,使用子查询处理不存在条件。
以下语法仅在表为空时有效。如果您的表不为空,则不会插入记录。语法如下:
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)
让我们使用插入命令在表中插入记录。插入记录的查询如下:
mysql> insert into ExecuteInsertDemo values('John'); Query OK, 1 row affected (0.19 sec)
假设我们的表不为空。它只有一条记录。如果执行插入命令,则 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’ 已成功插入。