所以这是我的问题,我正在为一个应用程序的等待列表系统工作。当我们启动时,用户将注册以获得通知,并提供推荐链接以帮助“提升”他们在等待列表中的位置。
我遇到的问题是如何在mysql或nosql数据库中对它们进行排序。我遇到的问题是,如果我的数据库如下所示:
User | Ranking | Invited
-------------------------
user1 | 1 | 0
user2 | 2 | 0
user3 | 3 | 0
user4 | 4 | 0
user5 | 5 | 0
user6 | 6 | 0
user7 | 7 | 0
user8 | 8 | 1
现在,假设user8现在邀请了一个朋友。它们会上升到顶端,但是我该如何对这些数据进行排序呢?可以将整个表重新排序为如下所示:
User | Ranking | Invited
-------------------------
user1 | 2 | 0
user2 | 3 | 0
user3 | 4 | 0
user4 | 5 | 0
user5 | 6 | 0
user6 | 7 | 0
user7 | 8 | 0
user8 | 1 | 1
但如果记录超过几百张就不太实用了。也许我没有正确看待这个问题?一定有更简单的解决办法?任何指点或帮助是感激的!谢谢您。
1条答案
按热度按时间iyzzxitl1#
如果您希望排名是基于谁邀请了最多的人,并且如果相同数量的邀请,则是他们的原始排名,请在阅读表格时按此方式排序:
如果在某个更大的查询中需要该顺序,可以为此创建一个视图,但实际上应该避免更新所有现有记录的排名。
如果想得到所有用户的“排名”,请参见如何在mysql查询结果中显示序号。
如果您真的需要能够查找单个用户的排名,那么您可能需要更新所有的行;根据您的负载有多重,您可以通过某个作业每隔x分钟执行一次,或者每次通过触发器更新一行时执行一次。做前者的一个简单例子是: