我需要这样的查询。
Set @var1:="30,31";
Select * from mytable where id in (@var)
我尝试了更多的桌子, 但MySQL返回null值。 为什么?
答案 0 :(得分: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 :(得分:1)
您可以使用find_in_set()
选中Here
SET @var1 = "30,31";
SELECT * FROM mytable WHERE find_in_set(myTable.myColumn, @var1);
MySQL返回NULL
值,因为搜索字符串而不是值列表