我需要在mysql中创建一个存储过程,通过提供id列表作为逗号分隔列表来删除表中的多个记录。
例如
(请注意表中的Id列是整数)
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `deleteLines`(IN $ids varchar(1000))
BEGIN
select * from line where $ids in ($ids);
END$$
DELIMITER;
CALL deleteLines('1,3,5,12');
在此方案中删除多条记录的最佳方法是什么?
答案 0 :(得分:1)
如果必须这样做,请使用find_in_set()
:
select * from line where find_in_set(id, in_ids);
实际上,如果你想删除记录,定义应该更像这样:
DELIMITER $$
CREATE PROCEDURE `deleteLines`(
IN in_ids varchar(1000)
)
BEGIN
delete from line
where find_in_set(id, in_ids);
END$$
DELIMITER;