Sử dụng mệnh đề IN để xóa nhiều bản ghi theo danh sách giá trị ID chỉ trong một câu lệnh.
Cú pháp
DELETE FROM table_name WHERE id_column IN (value1, value2, ..., valueN);
Ví dụ minh họa
mysql> CREATE TABLE DeleteManyRows (Id INT, Name VARCHAR(200), Age INT); Query OK, 0 rows affected (3.35 sec) mysql> INSERT INTO DeleteManyRows VALUES (1,'John',23), (2,'Johnson',22), (3,'Sam',20), (4,'David',26), (5,'Carol',21), (6,'Smith',29); Query OK, 6 rows affected
Xóa các ID 1,2,3,4:
mysql> DELETE FROM DeleteManyRows WHERE Id IN (1,2,3,4); Query OK, 4 rows affected (0.25 sec)
Kết quả còn lại:
+------+-------+------+ | Id | Name | Age | +------+-------+------+ | 5 | Carol | 21 | | 6 | Smith | 29 | +------+-------+------+
Các biến thể hữu ích
Xóa theo subquery:
DELETE FROM table_name WHERE id IN (SELECT id FROM other_table WHERE condition);
Xóa theo khoảng (range):
DELETE FROM table_name WHERE id BETWEEN 1 AND 100;
Giới hạn số dòng xóa (LIMIT):
DELETE FROM table_name WHERE condition LIMIT 100;
Lưu ý hiệu năng & an toàn
- Đảm bảo cột
Idcó index (thường là PK). - Với danh sách ID lớn (>1000), cân nhắc chia batch hoặc dùng JOIN với bảng tạm.
- Luôn test với
SELECT * FROM table WHERE Id IN (...)trước khi DELETE. - Trong transaction:
START TRANSACTION; DELETE ...; COMMIT;để có thể rollback.