在 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 的記錄都將從表中刪除。

更新於: 30-Jul-2019

1K+ 次瀏覽

啟動你的 職業生涯

透過完成該課程來獲得認證

開始
廣告