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

Chỉ xóa một số hàng từ bảng dựa trên điều kiện trong MySQL

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:

  1. Luôn chạy SELECT * FROM bang WHERE dieu_kien TRƯỚC khi DELETE để xác nhận
  2. Sử dụng transaction: START TRANSACTION; DELETE ...; COMMIT;/ROLLBACK;
  3. Backup dữ liệu trước khi xóa hàng loạt
  4. Tránh DELETE FROM bang khô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.