IN where语句中的mysql用户变量

时间:2012-02-06 10:10:25

标签: mysql select user-defined

我现在放弃并通过其他方式对其进行排序,但因为“好奇心杀了猫”我试图弄清楚如何在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)

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

3 个答案:

答案 0 :(得分:4)

使用find_in_set。以下将有效。

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

答案 1 :(得分:1)

尝试: -

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

答案 2 :(得分:0)

使用动态SQL:

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

有关详细信息,请查看THIS文章。