我在使用此存储过程时遇到了各种错误,从未定义的列名称到不明确的字段名称。
我想要做的是选择操作、分享、测试、病毒式传播和总数处于最高值的每个订户 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/