草庐IT

php - 瑞士排名系统Mysql查询问题

我正在创建一个视频排名网站。每个视频在比赛中与另一个视频对决。然后用户前进到下一场比赛。以下查询返回按输赢率排序的结果。SELECTv.id,v.wins,v.loses,v.wins/v.losesASwin_loss_ratioFROMvideoWHEREv.idNOTIN(SELECTh.competitoridFROMvideoASv,comphistoryAShWHEREv.id=h.id)ORDERBYwin_loss_ratioDESCLIMIT0,2结果是这样的:idwinsloseswin_loss_ratio73723.5000104522.5000我正在尝试找出一

mysql - 带领带的简单 MySQL 更新排名

我正在尝试根据分数存储用户排名,所有这些都放在一张表中,并在出现平局时跳过排名。例如:IDScoreRank2231417211725104325每次更新用户的分数时,整个表的排名也必须更新,因此在分数更新后,运行以下查询:SET@rank=0;UPDATEusersSETrank=@rank:=(@rank+1)ORDERBYscoreDESC;但是,就此而言,这不支持平局,或在平局后跳过排名数字。我想在尽可能少的查询中实现这种重新排名并且没有连接(因为它们看起来相当耗时)。我能够通过使用以下代码添加两列-last_score和tie_build_up来获得所需的结果:SET@ran

mysql - 根据排名和先前选择的行选择行

我正在尝试做一个论坛排名系统,它可以根据以前的记录一次获得一条记录。示例表是:|POST_ID|POST_REPLIES|--------------------------|1|5||2|2||3|8||4|8||5|12|--------------------------IfIdoasimplequeryORDERBYPOST_REPLIESDESC,IgetPOST_ID5,4,3,1,2.ButwhatIwanttodoisgetonlythenextrow(soasinglerowatatime),andbasedonthepostitiscurrentlyat.Forex

php - 使用php更新mysql自定义排名字段

我想找到一种方法来更新MySQL中的自定义排名字段,以便它会相应地重新编号所有其他项目。示例数据:IDNameRanking12Sara113Mike214John315Susie416Melissa517Jane6如果通过PHP,我将'Jane'更新到排名位置2,我希望每个人从'Mike'到'Melissa'移动到位置3到6。在ID=17处设置Ranking=2,并找到循环遍历其余部分以提高排名的方法。 最佳答案 你可以试试这样的东西if($curSort>$setSort){//"UPDATEtableSETRanking=(R

MySQL : How to count the position of the results in a Select?

这个问题在这里已经有了答案:RankfunctioninMySQL(13个答案)关闭3年前。我需要计算结果在Select中的位置——比如RANKING。我有这个:"SELECTPLAYERID,SUM(POINTS)ASPOINTSFROMTABLE1GROUPBYPLAYERIDORDERBYPOINTS"我明白了:PLAYERIDPOINTS420021501100380我需要知道PlayerID=1在排名中的位置。我不是MySQL专家-但可以这样计算结果:RKPLAYERIDPOINTS1420022150311004380类似于:“SELECTCOUNT...”非常感谢!丹尼尔

mysql - 按分数对 mysql 中的用户进行排名

我正在尝试根据我之前计算的分数对我的学生进行排名但问题是如果学生的分数相同,他们应该处于同一等级例如学生1获得满分学生2满分他们都必须排名为1;这是我的数据库的一个例子我想做的查询是(只是为了选择然后我可以将值插入我的列)SELECTa.pointscount(b.points)+1asrankFROMexamresultsaleftjoinexamresultsbona.points>b.pointsgroupbya.points;编辑更清晰:学生1分80学生2分77.5学生3分77.5学生4分77他们的排名应该是这样的学生1排名1学生2排名2学生3排名2学生4排名3我当前的查询返回

sql - 为每个类别选择 N 条记录并按 X 排序

我有一个包含博客文章的数据库表。我想在主页上为每个类别显示一个(或多个)帖子,例如按日期排序。所以我的帖子表看起来像这样:id|标题|说明|猫|文件名|日期我将如何创建这样的查询?我想过使用group-by或subselect,但我不确定这是否对性能有好处...该表有大量记录。 最佳答案 MySQL不支持分析函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE...),但您可以使用变量模拟该功能。如果您想要N个最近的博文:SELECTx.id,x.title,x.description,x.cat,x.filena

database - 什么是排名系统的好设计

我有一个USER表,它有userId和point字段。在运行时,我想知道特定用户基于他们的观点的排名是多少。实现此目的的最佳方法是什么:1:查询所有用户到一个列表中。根据点对列表进行排序并进行二进制搜索以查找该用户的排名。这听起来像是个坏主意。2:是否可以通过创建数据库查询来完成这些任务?我预计有2000-5000个用户。 最佳答案 SET@rownum:=0;SELECTrank,userId,pointFROM(SELECT@rownum:=@rownum+1ASrank,userId,pointFROMuserORDERBYp

php - 如何从 MySQL 和 PHP 中的 500 万行记分牌中获得排名?

我有一个排行榜,其中有一个“得分”列。我在分数列上也有一个索引,它允许我非常快速地按分数对表进行排序,甚至可以切出前十名或任意数量的分数——即使有500万行!但是,我真正想要的是在排行榜中也显示玩家的“排名”。我尝试了几种方法,但在处理超过100000行的任何内容时似乎都没有成功(它们开始占用超过半秒,考虑到我预计有数百个并发用户,这太长了)。我目前正在使用以下查询来确定一个用户的排名,然后在我的输出中为高于此的用户简单地递增-但它非常慢。SELECTtro.score,tro.userId,(SELECTcount(*)FROMscoreboardtriWHEREtri.score>

sql - Mysql - 如何通过交替 (1,2,3, 1, 2, 3, 1, 2, 3,) 行来排序结果,这可能吗?

我想按客户1、2、3对我的结果进行排序,然后再按客户1、2、3等排序。有没有一种方法可以在不使用for循环或进行三个单独查询的情况下执行此操作?不仅如此,我还在处理分页数据,因此它需要返回x个结果,但要始终如一。有什么想法吗?可以GROUPBY吗?client_idproject_idproject_name--------------------------------142projectabc249projectxyz341project123122projectapple229projectorange321projectbanana 最佳答案