gpt4 book ai didi

mysql - 了解 MySQL 中的排名功能

转载 作者:行者123 更新时间:2023-11-29 03:23:37 25 4
gpt4 key购买 nike

我正在尝试使用 MySQL 中的变量来理解密集排序。

我创建了一个表:

create table scores (id int,score float);

像这样插入值:

insert into scores values(1,3.50);
insert into scores values(2,3.65);
insert into scores values(3,4.00);
insert into scores values(4,3.85);
insert into scores values(5,4.00);
insert into scores values(6,3.65);

我编写的查询使用这样的分数对表进行排名:

set @rank=0;
set@score='';
select score,
(@rank := if(@score = score,
@rank,
if(@score := score,
@rank+1,
@rank
)
)
) as rank
from scores
order by score desc;

当我“不”按分数排序运行查询时 desc输出是这样的:

score   rank 
3.5 1
3.65 2
4 3
3.85 4
4 5
3.65 6

当我运行查询“with”order by score desc 时,我得到了输出,它是这样的:

score   rank
4 1
4 1
3.85 2
3.65 3
3.65 3
3.5 4

使用下面的代码片段时内部发生了什么?

select score,
(@rank := if(@score = score,
@rank,
if(@score := score,
@rank+1,
@rank
)
)
) as rank
from scores

最佳答案

您的排名算法基本上只是将每一行的分数与前一行或“”(对于第一行)的分数进行比较。如果分数相同,则返回相同的排名,如果分数发生变化,则排名增加一。

编辑

顺便说一句,它是在对结果集排序后执行此操作的。

关于mysql - 了解 MySQL 中的排名功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39958919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com