在 MySQL 中用条件截断?
mysqlmysqli database
在 MySQL 中,没有用条件截断的方法。您不能将 truncate 语句与 where 子句一起使用。
如果您需要条件,请使用 delete 命令 −
DELETE FROM yourTableName WHERE youCondition;
上述语法很好,但如果您想要更快的解决方案,那么与 Truncate 相比,DELETE 并不好。truncate 的优点是它不会写入日志。
让我们创建一个表。创建表的查询如下 −
mysql> create table DeleteDemo -> ( -> Id int, -> Name varchar(100) -> ); Query OK, 0 rows affected (1.22 sec)
使用 insert 命令在表中插入一些记录。 查询语句如下 −
mysql> insert into DeleteDemo values(101,'Carol'); Query OK, 1 row affected (0.15 sec) mysql> insert into DeleteDemo values(102,'Sam'); Query OK, 1 row affected (0.15 sec) mysql> insert into DeleteDemo values(103,'Bob'); Query OK, 1 row affected (0.16 sec) mysql> insert into DeleteDemo values(104,'Mike'); Query OK, 1 row affected (0.17 sec) mysql> insert into DeleteDemo values(105,'John'); Query OK, 1 row affected (0.09 sec) mysql> insert into DeleteDemo values(106,'Maria'); Query OK, 1 row affected (0.20 sec) mysql> insert into DeleteDemo values(107,'Johnson'); Query OK, 1 row affected (0.17 sec)
现在让我们使用 select 命令显示表中的所有记录。查询如下 −
mysql> select *from DeleteDemo;
输出
+------+---------+ | Id | Name | +------+---------+ | 101 | Carol | | 102 | Sam | | 103 | Bob | | 104 | Mike | | 105 | John | | 106 | Maria | | 107 | Johnson | +------+---------+ 7 rows in set (0.00 sec)
现在您可以使用 delete 命令,但该命令不会使用 where 子句截断。使用 where 子句从表中删除记录的查询如下 −
mysql> delete from DeleteDemo where Id>104; Query OK, 3 rows affected (0.13 sec)
让我们再次使用 select 命令检查表数据。查询如下 −
mysql> select *from DeleteDemo;
输出
+------+-------+ | Id | Name | +------+-------+ | 101 | Carol | | 102 | Sam | | 103 | Bob | | 104 | Mike | +------+-------+ 4 rows in set (0.00 sec)
查看上面的示例输出,所有大于 104 的记录都从表中删除。