Select 语句中的 MySQL 用户定义变量作为表名

标签 mysql variables case

我可以使用在先前的 select 语句中定义的用户定义变量作为另一个 select 语句中的表列吗?

例子:

SELECT `name`
INTO @_ptType
FROM `point_types`
WHERE `id` = _case;

SELECT SUM(@_ptType)
INTO _awardedPts
FROM `subscribers_points`
WHERE `subscriber_id` = _subscriber_id
GROUP BY `subscriber_id`;

SELECT `id`
INTO _badgeID
FROM `badges`
WHERE `trigger_point` = _awardedPts
AND `point_type_id` = _case;

假设在第一个 select 中返回到 @_ptType 的 'name' 是 'special'

下一个选择应该返回 sub_id 等匹配的“特殊”列的值,是吗?

我不断收到错误消息:“无数据 - 提取、选择或处理的行为零”

提前致谢。

最佳答案

诀窍是使用动态 SQL 字符串创建准备好的语句:

SET @sql_text = "SELECT SUM(@_ptType)
                 INTO _awardedPts
                 FROM `subscribers_points`
                 WHERE `subscriber_id` = _subscriber_id
                 GROUP BY `subscriber_id`;";

PREPARE stmt FROM @sql_text;

EXECUTE stmt;

DROP PREPARE stmt;

关于Select 语句中的 MySQL 用户定义变量作为表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27364015/

相关文章:

mysql - 我刚开始使用 MYSQL,但无法找到语法错​​误

php - 由于时间戳 now(),SQL 插入忽略不起作用

mysql - 用户的 SQL 总 session 持续时间

javascript - 在javascript中,多个等号是什么意思?

mysql - 从单个表返回多个计数

mysql - 可以在 UPDATE 语句中重复同一列吗?

mysql - '无法解析针对 BeanFactory 的 bean 引用' 使用 spEl 注释

jquery - 在 jquery 选择器中包含变量

Javascript 变量在 Chrome 中无法访问,但在 Firefox 中工作正常

mysql - 将 case 语句添加到 SQL 查询