小编典典

MySQL错误:#1247-不支持参考'业力'(对组功能的参考)

sql

这是下面的我的mysql查询。通过许多有用的问题和评论,我几乎快步入尾声了。该查询背后的思想是用户提交一个链接,应用程序插入两行,一个插入链接,另一行插入投票(默认投票,为什么用户不为自己提交的文件投票?)然后每一个投票只是另一行在akarma_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表中的业力总和相加,并在其值上附加一列。


阅读 156

收藏
2021-04-07

共1个答案

小编典典

问题在这里:

`ORDER BY karma...

您不能通过定义为别名的东西来订购。试试这个:

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

希望数据库可以弄清楚不要对其进行两次评估。如果不是,请先使用内部选择而不使用顺序来创建别名,然后使用另一个选择来进行排序。

2021-04-07