SQL循环删除记录

SQL Delete records in a loop

我想遍历逗号分隔的 ID 列表,并在 mysql 中将它们一一删除。像这样:-

Begin
for idToDelete in (113,114) LOOP
delete from `myTable`
where `ID`=idToDelete;
END LOOP;
END;

我怎样才能完成这项工作? for in 东西不工作。

您可以使用 IN 子句删除多条记录:

DELETE FROM `myTable` WHERE `ID` IN (YOUR COMMA SEPARATED IDS);

为什么需要循环?

如果您的 CSV 列表作为参数传输到查询中 - 单个字符串文字,则使用

DELETE 
FROM myTable
WHERE FIND_IN_SET(id, 'idsToDelete');

即特别是所示案例

DELETE 
FROM myTable
WHERE FIND_IN_SET(id, '113,114');

如果此列表在发送到 MySQL 之前立即插入到查询文本中,请查看 harish sharma 提供的解决方案。