MySQL 存储过程列名连接语法

标签 mysql stored-procedures

我在使用此存储过程时遇到了各种错误,从未定义的列名称到不明确的字段名称。

我想要做的是选择操作、分享、测试、病毒式传播和总数处于最高值的每个订户 ID。对于每个最高值,订阅者 ID 可能会有所不同,因此您可能会返回最多 5 个订阅者 ID。也许我的逻辑在这里是错误的,但下面是我的代码(请注意,这仅适用于“操作”列):

  SELECT `set1.subscriber_id`, `set1.action`, `set1.share`, `set1.test`, `set1.viral`, ( `set1.action` + `set1.share` + `set1.test` + `set1.viral` ) AS "total", `abuse_flag`

  FROM `subscribers_points` set1

  JOIN
        (
        SELECT `subscriber_id`, MAX(`action`) AS actionMax
        FROM `subscribers_points`
        WHERE `year` = _year
        AND `month` = _month
        GROUP BY `subscriber_id`
        ) groupedAction

  ON set1.subscriber_id=groupedAction.subscriber_id

  WHERE `year` = _year

  AND `month` = _month;

^ 这导致“字段列表”中出现“未知列“set1.subscriber_id””

这对我来说看起来是正确的。我不知道是什么导致了这个错误。

最佳答案

试试这个...没有大部分反引号...你只需要反引号来转义保留字等。

SELECT set1.subscriber_id, set1.action, set1.share, set1.test, set1.viral, 
( set1.action + set1.share + set1.test + set1.viral ) AS "total", abuse_flag
FROM subscribers_points set1
JOIN (
    SELECT subscriber_id, MAX(`action`) AS actionMax
    FROM subscribers_points
    WHERE year = _year
    AND month = _month
    GROUP BY subscriber_id
    ) as groupedAction
ON set1.subscriber_id=groupedAction.subscriber_id
WHERE year = _year
AND month = _month;

关于MySQL 存储过程列名连接语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27255156/

相关文章:

mysql - 如何授予用户访问mysql上所有存储过程的权限?

php - 字符串范围查询

php - Cake PHP,避免和检测空字段和重复主键

MySQL 存储过程调试输出

sql-server - 使用 Case 或 Join 的 TSQL Select 语句

php - 命令不同步;当我循环运行时,你现在不能运行这个命令

mysql - 通过和失败记录相同的测试

php - 如何使用Capsule和MySQL两种方式查询出 `jump condition `表数据?

MySQL自动添加当前数据库作为前缀

tsql - Sybase 存储过程 - 如何在 #table 上创建索引?