MySQL 变量中使用 SELECT 语句

3
我需要这样的查询。
Set @var1:="30,31";
Select * from mytable where id in (@var)

我尝试在多个表中进行操作,但MySQL返回了空值。为什么?


因为@var1是一个varchar变量而不是值列表。 - forpas
1
不是很重要,但你正在测试@VAR,而你还没有设置它。 - P.Salmon
你有检查过明显的拼写错误吗? - Nico Haase
2个回答

1
你需要使用动态SQL来完成这个任务。准备好的语句是一种常见的方法,但是绑定未知数量的值到WHERE IN子句是困难的。假设你总是只绑定两个值,我们可以尝试:
SET @sql = 'SELECT * FROM mytable WHERE id IN (?, ?)';
PREPARE stmt2 FROM @sql;
SET @var1 = 30;
SET @var2 = 31;
EXECUTE stmt2 USING @var1, @var2;

1
你可以使用find_in_set()来检查这里
SET @var1 = "30,31";
SELECT * FROM mytable WHERE find_in_set(myTable.myColumn, @var1);

MySQL返回NULL值是因为搜索字符串不是值列表。


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