我有两个表:player
和 player_friend
。表 player
具有三个字段:“id”、“level”和“username”。表 player_friend
有两个字段:“player_id”和“friend_id”。我可以通过查询 player
来获取排名中的所有位置,按“level”排序,结果中该行的索引就是排名中的位置:
SELECT (username, level) FROM player SORT BY level;
如何查询 player_friend
'friend_id' 中条目的排名、用户名和级别,其中 'player_id' = x?
例如:
玩家
id | username | level
1 | a | 1
2 | b | 3
3 | c | 2
4 | d | 5
玩家 friend
player_id | friend_id
4 | 1
4 | 2
预期结果:
placing | username | level
2 | b | 3
4 | a | 1
说明:用户名“b”的好友为全局排名第二,用户名“a”的好友为全局排名(按级别排序),示例中不可见,仅显示所在位置player_friend
“player_id”是 4。
提前致谢!
最佳答案
我想你想要row_number()
:
select p.*
from player_friend pf join
(select p.*, row_number() over (order by level) as placing
from player p
) p
on pf.friend_id = p.id;
关于sql - 在 POSTGRESQL 中排名放置查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62984357/