PostgreSQL随机开始抱怨分组子句

近一年来,我一直在使用此sql报告游戏配置文件排名,该排名基于游戏排名超过10的天数:

SELECT P.id,P.name,P.rank,COUNT(P.id)

FROM application_classes_models_gameprofile P

LEFT JOIN application_classes_models_gamedeveloper D ON D.id = P."developerId"

LEFT JOIN application_classes_models_gameprofileposition PP ON 
PP."gameProfileId" = P.id AND 
PP.position <= 10 AND
PP.position > 0

WHERE 
P.inactive = false AND
D."excludeFromRanking" = false AND
P.rank <= 10 AND 
P.rank > 0

GROUP BY P.id

ORDER BY COUNT(P.id) DESC

在postgresql中分组总是很痛苦的,但是上面的sql已经工作了将近一年了,返回了预期的结果。

昨天,我的游戏配置文件表出现问题,这迫使我不得不为该表恢复备份。我这样做是使用pg_restore -v --clean -t application_classes_models_gameprofile < backup.bak

今天早上,当我们运行报告时,postgresql返回了错误:

column "p.name" must appear in the GROUP BY clause or be used in an aggregate function

请澄清一下,此sql已经运行了将近一年,并且针对此特定sql查询从未出现上述错误,但是,似乎在我们清理并还原了游戏配置文件表后,我们得到了以上错误...

我知道我可以通过修复sql查询来删除名称/等级来解决问题,但是我担心这里是否存在更深的问题...所以有人知道为什么会发生上述情况吗?

Postgresal版本是9.6,在debian 9上运行

pjdontcry 回答:PostgreSQL随机开始抱怨分组子句

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2312247.html

大家都在问