Xóa có chọn lọc bản ghi với điều kiện WHERE trong MySQL
Sử dụng DELETE FROM bang WHERE dieu_kien để xóa chỉ các hàng thỏa mãn điều kiện.
Tạo bảng và dữ liệu
mysql> create table DemoTable ( Id int, Name varchar(20) ); mysql> insert into DemoTable values(100,'Bob'); mysql> insert into DemoTable values(101,'Chris'); mysql> insert into DemoTable values(102,'David'); mysql> insert into DemoTable values(103,'Sam'); mysql> insert into DemoTable values(104,'Carol');
Dữ liệu ban đầu
+------+-------+ | Id | Name | +------+-------+ | 100 | Bob | | 101 | Chris | | 102 | David | | 103 | Sam | | 104 | Carol | +------+-------+
Xóa các hàng có Id > 102
mysql> delete from DemoTable where Id > 102; Query OK, 2 rows affected (0.10 sec)
Kết quả
+------+-------+ | Id | Name | +------+-------+ | 100 | Bob | | 101 | Chris | | 102 | David | +------+-------+
⚠️ CẢNH BÁO AN TOÀN:
- Luôn chạy
SELECT * FROM bang WHERE dieu_kienTRƯỚC khi DELETE để xác nhận - Sử dụng transaction:
START TRANSACTION; DELETE ...; COMMIT;/ROLLBACK; - Backup dữ liệu trước khi xóa hàng loạt
- Tránh
DELETE FROM bangkhông WHERE (xóa toàn bộ bảng)
Giới hạn số hàng xóa (MySQL): DELETE FROM bang WHERE dieu_kien LIMIT 100 (xóa tối đa 100 hàng).
TRUNCATE vs DELETE: TRUNCATE TABLE bang xóa toàn bộ, reset AUTO_INCREMENT, nhanh hơn, không trigger, không rollback được.