创建一张叫scores的表,内容如下。因为测试排名,所以就用最简单的结构。
id | score |
---|---|
99 | |
80 | # 🎜🎜# |
87 | |
60 | #🎜 🎜 #5 |
6 | |
# 🎜🎜# | 수요. |
rank | #🎜🎜 # | 1 |
---|---|---|
6# ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 🎜 #2 | ||
80 | 3 | |
sql 문 | ||
我们发现结果不是我们预期的。因为我们还没有去重。比87大的有俩个都是99,那么87的rank就是2+1=3,而我们要的排名连续不断的。所以用distinct 关键字去重。 第三步:select id, score, (select count(distinct(score)) from scores as b where b.score > a.score ) + 1 as rank from scores as a order by rank; 로그인 후 복사 |
||
顺序排名我们就按照score字段倒序查询即可,只不过是用msyql的变量去做rank。mysql中的变量是用‘@’跟上变量名称。@rowNum php中我们用$rowNum。mysql中赋值用 := 来赋值。(select @rowNum :=0) r 是给变量@rowNum一个初始值为0。这个很好理解。就是 按照我们要排名的字段倒序去查询,再用mysql变量给每一条结果加一个排列序号。 로그인 후 복사 | sql 문select t.id, t.score,@rowNum := @rowNum +1 as rank from (select @rowNum :=0) r, scores as t order by t.score desc ; 로그인 후 복사 | result|
더 많은 SQL 관련 기술 기사를 확인하세요. | SQL 튜토리얼열을 방문하여 알아보세요! |
위 내용은 MySQL 병렬 순위 및 순차 순위 쿼리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!