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

4 mysql sql

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

#1247 - Reference 'karma' not supported (reference to group function)
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 8

问题出在这里:

`ORDER BY karma...
Run Code Online (Sandbox Code Playgroud)

您不能通过定义为别名的内容进行排序.试试这个:

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

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