mysql - 使用 mysql 变量保存用于 where in 子句的逗号分隔值

标签 mysql variables where-clause in-clause

我必须运行这样的查询(查询 1)-

select something from sometable where someId in (1,2,3)

我想为 ID 部分保留一个变量,像这样(查询 2)-

set @myIds = "1,2,3";
select something from sometable where someId in (@myIds);

但这并没有给出预期的结果(给出一个空的结果集),也没有查询错误。

我检查过,如果我将逗号分隔的 ID 括在引号内,则查询结果为空结果集(查询 3)-

select something from sometable where someId in ("1,2,3");

我想当我像上面显示的那样使用变量@myIds(查询 2)时,它正在评估上面的查询(查询 3)。

最佳答案

你需要有一个动态的sql,

SET @myIds = '1,2,3';
SET @sql = CONCAT('select something from sometable where someId in (',@myIds,')');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

关于mysql - 使用 mysql 变量保存用于 where in 子句的逗号分隔值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18844290/

相关文章:

php - 如何在一个服务器中创建表,就像从另一个表创建表一样

php - 定时账户访问(PHP/mysql)

mysql - 在 MySQL 中同时更改多个字段类型

Bash Shell 脚本 - 对话框表单变量

java - 如何编写接受多种类型的函数?

bash cat 删除字符

mysql - 如何创建一个表,当内容更改时自动更新另一个表?

php - WHERE 子句中的 MySQL 条件 IF 语句

用于查找 2 天内到期日期的 MySQL WHERE 语句

sql - Where 子句检查另一个表中的两列