SQL循环删除记录

时间:2020-02-25 05:03:54

标签: mysql sql mysql-workbench

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

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

我该如何进行这项工作? for in不能正常工作。

2 个答案:

答案 0 :(得分:1)

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

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

为什么需要循环?

答案 1 :(得分:1)

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

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

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

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