-1
我不明白为什么这不起作用。有人可以解释我需要做什么吗?在MySQL中,如何在WHERE IN子句中使用用户定义的变量?
SET @my_list = '2,6,8,10,12,13,14,18,19,21';
DELETE FROM my_table WHERE my_table.table_id IN (@my_list);
我不明白为什么这不起作用。有人可以解释我需要做什么吗?在MySQL中,如何在WHERE IN子句中使用用户定义的变量?
SET @my_list = '2,6,8,10,12,13,14,18,19,21';
DELETE FROM my_table WHERE my_table.table_id IN (@my_list);
它解释@my_list作为一个单一的ID,所以你要问它MY_TABLE删除你自己的ID为字符串“2,6,8,10,12,13,14,18,19 ,21"
你可以尝试的
SET @my_list = '2,6,8,10,12,13,14,18,19,21';
SET @exec = CONCAT('DELETE FROM my_table WHERE my_table.table_id IN (', @my_list ,')');
EXECUTE (@exec);
感谢您的回答。有没有办法让my_list变成mysql可以理解的实际列表类型,所以我不需要做concat事情?我只想将列表插入到一组删除查询中,这些查询都必须使用相同的列表。这是因为有一堆表具有外键关系,所以它们必须全部删除相同的id列表。 –
可能重复[通行证字符串转换成SQL WHERE IN](http://stackoverflow.com/questions/6945223/pass-string-into-sql-where-在) –