Mysql错误:#1247 - 不支持引用'karma'(引用组函数)

时间:2009-11-22 00:30:44

标签: sql mysql

下面是我的mysql查询。通过许多有用的问题和评论,我几乎在旅程的最后。这个查询背后的想法是用户提交一个链接,应用程序插入两行,一行插入链接,另一行插入投票(默认投票,为什么用户不投票为自己的提交?)然后每一次投票只是另一行在投票表中,karma_upkarma_down等于1(很快就会更改为karma_delta以保存额外的列。我也有流行算法在那里似乎请查询我的查询。运行以下查询可以保证这个错误。

#1247 - Reference 'karma' not supported (reference to group function)

这个问题的大部分内容都是为了获得业力

SELECT links.*, (SUM(votes.karma_up) - SUM(votes.karma_down)) AS karma
FROM links, votes
WHERE links.id = votes.link_id
GROUP BY votes.link_id
ORDER BY (karma - 1) / POW((TIMESTAMPDIFF(HOUR, links.created, NOW()) + 2), 1.5) DESC
LIMIT 0, 100

如果没有ORDER BY部分的流行度算法,则查询会完美运行,从votes表中添加总和业力,并使用它的值添加额外列。

1 个答案:

答案 0 :(得分:8)

问题在于:

`ORDER BY karma...

您无法通过定义为别名的内容进行排序。试试这个:

`ORDER BY ((SUM(votes.karma_up) - SUM(votes.karma_down)) - 1) / POW((TIMESTAMPDIFF(HOUR, links.created, NOW()) + 2), 1.5) DESC`

希望DB能够弄清楚不要对它进行两次评估。如果没有,请先使用不带顺序的内部选择来创建别名,然后使用另一个选择进行排序。