Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

TRUNCATE với điều kiện (WHERE) trong MySQL có được không?

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ểmTRUNCATEDELETE
Hỗ trợ WHEREKhôngCó
Tốc độRất nhanh (metadata only)Chậm hơn (ghi log từng hàng)
Reset AUTO_INCREMENTCóKhông
Kích hoạt TRIGGERKhôngCó (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.