在 MySQL 中使用條件截斷?
在 MySQL 中,沒有辦法使用條件進行截斷。不能將 truncate 語句與 where 子句一起使用。
如果需要指定條件,請使用 delete 命令 −
DELETE FROM yourTableName WHERE youCondition;
上面的語法是正確的,但如果你需要一個更快的解決方案,DELETE 就比 Truncate 差。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 的記錄都將從表中刪除。
廣告