我正在尝试编写一个查询来查找用户游戏的得分排名。我需要它来获取用户 ID,然后将该用户的相对排名返回给其他用户的分数。有一个用户和一个游戏桌。游戏表有一个 userId 字段,具有一对多的关系。
样品表:
用户:
id freebee
1 10
2 13游戏:
userId 得分
1 15
1 20
2 10
1 15
将 $id 1 传递给此函数应返回值 1,因为用户 1 当前得分最高。同样,用户 2 将返回 2。
目前这就是我所拥有的:
SELECT outerU.id, (
SELECT COUNT( * )
FROM users userI, games gameI
WHERE userI.id = gameI.userId
AND userO.id = gameO.userId
AND (
userI.freebee + SUM(gameI.score)
) >= ( userO.freebee + SUM(gameO.score) )
) AS rank
FROM users userO,
games gameO
WHERE id = $id
这给了我一个“无效使用组功能”错误。有任何想法吗?