4

我现在放弃并通过其他方式对其进行排序,但因为“好奇心害死猫”,我试图弄清楚如何在 IN where 语句中使用 mysql 查询 @variables:

所以,从这里:

SELECT * FROM table1 WHERE table1.ID IN (794,758)

尝试包含一个变量,这会返回一个语法错误:

SET @variousids="(794,758)";
SELECT * FROM table1 WHERE table1.ID IN @variousids

这仅从第一个返回值:

SET @variousids="794,758";
SELECT * FROM table1 WHERE table1.ID IN (@variousids)

我尝试了不同的语法、值,但没有找到任何关于定义值列表的特定文档。

4

3 回答 3

6

使用find_in_set. 以下将起作用。

SET @variousids="794,758";
SELECT * FROM table1 WHERE find_in_set(table1.ID,@variousids)
于 2012-02-06T10:22:37.653 回答
1

尝试 :-

SET @variousids="794,758";
SELECT * FROM table1 WHERE table1.ID FIND_IN_SET (table1.ID,@variousids)
于 2012-02-06T10:23:01.647 回答
0

使用动态 SQL:

SET @variousids="794,758";
prepare stmt from 'SELECT * FROM table1 WHERE table1.ID IN ( ? )'
execute stmt using @variousids;

有关更多信息,请查看这篇文章。

于 2012-02-06T10:13:15.280 回答