【问题标题】:Delete multiple rows by id in SQLSQL中按id删除多行
【发布时间】:2021-02-27 04:39:19
【问题描述】:

我有一个大列表,其中包含我需要从 SQL 数据库中删除的 ID:

B14260V;B14261;B14261V;B14262;B14264;B14264V;B14265

目前我删除单个项目:

DELETE 
  FROM `ixml_prd_map` 
 WHERE `ixml_prd_map`.`id` = B14260V"

是否可以通过给定列表批量删除项目?

【问题讨论】:

标签: mysql sql string csv where-clause


【解决方案1】:

使用IN 运算符。

例子:

DELETE FROM `ixml_prd_map` WHERE `ixml_prd_map`.`id` IN ("B14260V", "B14261", "B14261V")

【讨论】:

    【解决方案2】:

    你想要find_in_set():

    delete from ixml_prd_map
    where find_in_set(replace(@mylist, ';', ','), id)
    

    find_in_set() 返回一个元素在 CSV 列表中的位置;它期望分隔符是逗号,所以如果你真的有分号,那么你需要改变它,如上面的查询所示。

    更好的选择是将您的输入作为正确的值列表提供,如下所示:

    delete from ixml_prd_map
    where id in ('B14260V', 'B14261', 'B14261V')
    

    【讨论】:

      【解决方案3】:
      DELETE FROM ixml_prd_map WHERE id IN (...your id list...)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-10
        • 1970-01-01
        • 1970-01-01
        • 2011-06-25
        • 2013-04-08
        • 1970-01-01
        相关资源
        最近更新 更多