KHÔNG. MySQL không hỗ trợ TRUNCATE TABLE kèm mệnh đề WHERE. TRUNCATE xóa toàn bộ dữ liệu bảng, reset AUTO_INCREMENT, không ghi log từng hàng (nhanh hơn DELETE).
Nếu cần xóa có điều kiện → dùng DELETE:
DELETE FROM ten_bang WHERE dieu_kien;
Ví dụ:
CREATE TABLE DeleteDemo (Id INT, Name VARCHAR(100)); INSERT INTO DeleteDemo VALUES (101,'Carol'), (102,'Sam'), (103,'Bob'), (104,'Mike'), (105,'John'), (106,'Maria'), (107,'Johnson');
Xóa các hàng có Id > 104:
DELETE FROM DeleteDemo WHERE Id > 104;
Kết quả
+------+-------+ | Id | Name | +------+-------+ | 101 | Carol | | 102 | Sam | | 103 | Bob | | 104 | Mike | +------+-------+
So sánh:
| Đặc điểm | TRUNCATE | DELETE |
|---|---|---|
| Hỗ trợ WHERE | Không | Có |
| Tốc độ | Rất nhanh (metadata only) | Chậm hơn (ghi log từng hàng) |
| Reset AUTO_INCREMENT | Có | Không |
| Kích hoạt TRIGGER | Không | Có (FOR EACH ROW) |
Giải pháp nhanh cho xóa có điều kiện lớn: Tạo bảng mới chỉ chứa dữ liệu cần giữ, rename bảng.