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 提供的解决方案。
我想遍历逗号分隔的 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 提供的解决方案。