我现在放弃并通过其他方式对其进行排序,但因为“好奇心杀了猫”我试图弄清楚如何在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)
我尝试了不同的语法,值,但没有找到任何关于定义值列表的具体文档。
答案 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文章。