MySQL,混淆 w/查询/错误代码:1111。组函数的使用无效。
Posted
技术标签:
【中文标题】MySQL,混淆 w/查询/错误代码:1111。组函数的使用无效。【英文标题】:MySQL, Confused w/ query / Error Code: 1111. Invalid use of group function. 【发布时间】:2011-12-20 12:29:14 【问题描述】:我有 3 张桌子。
Video (Id, ViewCount, Location)
Likes (Id, Video, User)
Location (Id, Name)
如何查询排名最高的四个视频(Video.ViewCount + count(Likes.User) 的总和 按 Video.Id 对它们进行分组,并返回来自特定位置的前 4 个结果。
我试过这个:
SELECT Video.Id, sum(Video.ViewCount + count(Likes.User)) as Points From Video
Left Join Likes
ON Likes.Video=Video.Id
WHERE Video.Location=30
GROUP BY Video.Id
ORDER BY Points DESC
LIMIT 4;
但是我得到了对组功能的无效使用。有没有人有任何指针?
【问题讨论】:
您不能在其他聚合函数中使用聚合函数。 【参考方案1】:SELECT id,
viewcount +
(
SELECT COUNT(*)
FROM likes l
WHERE l.video = v.id
) AS points
FROM video v
WHERE location = 30
ORDER BY
points DESC, id
LIMIT 4
【讨论】:
只需要在 FROM 视频的末尾添加一个 v 就可以了。感谢您引导我朝着正确的方向前进。以上是关于MySQL,混淆 w/查询/错误代码:1111。组函数的使用无效。的主要内容,如果未能解决你的问题,请参考以下文章