在IN语句中使用MySQL用户变量

4

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

因此,从这个开始:

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个回答

8

使用find_in_set函数。以下代码可以实现。

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

1

使用动态SQL:

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

更多信息,请查看文章。


1

尝试:-

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

谢谢,我正要写关于那个的解决方案。 - luison
2
这个代码会报错,而其他答案中的代码可以正常工作... 在MySQL 5.7中无法使用where之后的'table1.ID'。 - Kukeltje

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接