在 SQL 中按 id 删除多行
Delete multiple rows by id in SQL
我有一个大列表,其中包含我需要从 SQL 数据库中删除的 ID:
B14260V;B14261;B14261V;B14262;B14264;B14264V;B14265
目前我删除单个项目:
DELETE
FROM `ixml_prd_map`
WHERE `ixml_prd_map`.`id` = B14260V"
是否可以批量删除给定列表中的项目?
你想要find_in_set()
:
delete from ixml_prd_map
where find_in_set(replace(@mylist, ';', ','), id)
find_in_set()
returns 元素在 CSV 列表中的位置;它期望分隔符是逗号,所以如果你真的有分号,那么你需要更改它,如上面的查询所示。
更好的选择是将您的输入作为正确的值列表提供,如:
delete from ixml_prd_map
where id in ('B14260V', 'B14261', 'B14261V')
DELETE FROM ixml_prd_map WHERE id IN (...your id list...)
使用 IN
运算符。
示例:
DELETE FROM `ixml_prd_map` WHERE `ixml_prd_map`.`id` IN ("B14260V", "B14261", "B14261V")
我有一个大列表,其中包含我需要从 SQL 数据库中删除的 ID:
B14260V;B14261;B14261V;B14262;B14264;B14264V;B14265
目前我删除单个项目:
DELETE
FROM `ixml_prd_map`
WHERE `ixml_prd_map`.`id` = B14260V"
是否可以批量删除给定列表中的项目?
你想要find_in_set()
:
delete from ixml_prd_map
where find_in_set(replace(@mylist, ';', ','), id)
find_in_set()
returns 元素在 CSV 列表中的位置;它期望分隔符是逗号,所以如果你真的有分号,那么你需要更改它,如上面的查询所示。
更好的选择是将您的输入作为正确的值列表提供,如:
delete from ixml_prd_map
where id in ('B14260V', 'B14261', 'B14261V')
DELETE FROM ixml_prd_map WHERE id IN (...your id list...)
使用 IN
运算符。
示例:
DELETE FROM `ixml_prd_map` WHERE `ixml_prd_map`.`id` IN ("B14260V", "B14261", "B14261V")