【问题标题】:MySql delete multiple records by comma separated listMySql通过逗号分隔列表删除多条记录
【发布时间】:2017-01-25 08:52:51
【问题描述】:

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

在这种情况下删除多条记录的最佳方法是什么?

【问题讨论】:

  • sproc 的创建是概要的特定部分吗?
  • 为什么需要一个程序来完成如此简单的任务? stackoverflow.com/questions/2615566/delete-where-id-in-list
  • 此存储过程将由应用程序调用。我没有从应用程序调用内联 SQL 语句,而是将其移至存储过程。稍后如果需要修改,无需编译应用程序即可轻松完成任何操作。

标签: mysql stored-procedures


【解决方案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;

【讨论】:

  • 谢谢,这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
  • 2016-12-01
  • 2017-09-13
  • 2013-07-03
  • 2020-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多