Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql选择变量_Mysql - Fatal编程技术网

Mysql选择变量

Mysql选择变量,mysql,Mysql,我需要一个这样的问题 Set @var1:="30,31"; Select * from mytable where id in (@var) 我试过更多的桌子, 但是MySQL返回空值。 为什么?要做到这一点,需要动态SQL。准备好的语句是一种常见的方法,除了难以将未知数量的值绑定到中的子句之外。假设您总是只绑定两个值,我们可以尝试: SET @sql = 'SELECT * FROM mytable WHERE id IN (?, ?)'; PREPARE stmt2 FROM @sql;

我需要一个这样的问题

Set @var1:="30,31";
Select * from mytable where id in (@var)
我试过更多的桌子, 但是MySQL返回空值。
为什么?

要做到这一点,需要动态SQL。准备好的语句是一种常见的方法,除了难以将未知数量的值绑定到
中的
子句之外。假设您总是只绑定两个值,我们可以尝试:

SET @sql = 'SELECT * FROM mytable WHERE id IN (?, ?)';
PREPARE stmt2 FROM @sql;
SET @var1 = 30;
SET @var2 = 31;
EXECUTE stmt2 USING @var1, @var2;

您可以使用
find\u in\u set()
check


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

,因为@var1是一个varchar变量而不是值列表。这并不重要,但您正在测试尚未设置的@VAR。是否检查了明显的打字错误?
SET @var1 = "30,31";
SELECT * FROM mytable WHERE find_in_set(myTable.myColumn, @var1);