Trong MySQL, không có cách nào để cắt bớt với điều kiện. Bạn không thể sử dụng câu lệnh cắt ngắn với mệnh đề where.
Nếu bạn muốn điều kiện, hãy sử dụng lệnh xóa -
DELETE FROM yourTableName WHERE youCondition;
Cú pháp trên là tốt nhưng nếu bạn muốn một giải pháp nhanh hơn, thì DELETE không tốt so với Truncate. Ưu điểm của truncate là nó không ghi vào nhật ký.
Hãy để chúng tôi tạo một bảng. Truy vấn để tạo bảng như sau -
mysql> create table DeleteDemo -> ( -> Id int, -> Name varchar(100) -> ); Query OK, 0 rows affected (1.22 sec)
Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -
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)
Bây giờ chúng ta hãy hiển thị tất cả các bản ghi từ bảng bằng lệnh select. Truy vấn như sau -
mysql> select *from DeleteDemo;
Đầu ra
+------+---------+ | Id | Name | +------+---------+ | 101 | Carol | | 102 | Sam | | 103 | Bob | | 104 | Mike | | 105 | John | | 106 | Maria | | 107 | Johnson | +------+---------+ 7 rows in set (0.00 sec)
Bây giờ bạn có thể sử dụng lệnh xóa nhưng điều đó sẽ không cắt ngắn với mệnh đề where. Truy vấn xóa bản ghi khỏi bảng bằng mệnh đề where như sau -
mysql> delete from DeleteDemo where Id>104; Query OK, 3 rows affected (0.13 sec)
Hãy để chúng tôi kiểm tra dữ liệu bảng một lần nữa bằng cách sử dụng lệnh select. Truy vấn như sau -
mysql> select *from DeleteDemo;
Đầu ra
+------+-------+ | Id | Name | +------+-------+ | 101 | Carol | | 102 | Sam | | 103 | Bob | | 104 | Mike | +------+-------+ 4 rows in set (0.00 sec)
Nhìn vào kết quả đầu ra mẫu ở trên, tất cả các bản ghi lớn hơn 104 sẽ bị xóa khỏi bảng.