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

Xóa nhiều dòng theo danh sách ID trong MySQL (IN)


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 Id có 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.