我必须使用查询从数据库中删除某些行。例如,我有一个变量,它以逗号分隔模式存储id:
@ids = (1,2,3);
现在我想在IN子句中使用这个ID:
delete from table_name where id in (@ids);
但它不起作用。任何建议或帮助都会非常有用。
由于
答案 0 :(得分:3)
将变量放入查询不会将其替换为字符串,它仍然被视为单个值。所以WHERE id IN (@ids)
没有查找任何数字,它正在寻找与整个字符串1,2,3
匹配的ID。
您必须使用FIND_IN_SET
来匹配字符串中逗号分隔的列表。
SET @ids = '1,2,3';
DELETE FROM table_name
WHERE FIND_IN_SET(id, @ids);