MySql以逗号分隔列表

时间:2017-01-25 00:42:36

标签: mysql stored-procedures

我需要在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');

在此方案中删除多条记录的最佳方法是什么?

1 个答案:

答案 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;