惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
P
Proofpoint News Feed
The Last Watchdog
The Last Watchdog
S
Secure Thoughts
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
N
News | PayPal Newsroom
Application and Cybersecurity Blog
Application and Cybersecurity Blog
O
OpenAI News
S
Security @ Cisco Blogs
宝玉的分享
宝玉的分享
Hacker News: Ask HN
Hacker News: Ask HN
T
Troy Hunt's Blog
Google Online Security Blog
Google Online Security Blog
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
TaoSecurity Blog
TaoSecurity Blog
Help Net Security
Help Net Security
Latest news
Latest news
NISL@THU
NISL@THU
S
Security Affairs
博客园_首页
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 聂微东
AI
AI
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Recent Announcements
Recent Announcements
P
Privacy & Cybersecurity Law Blog
小众软件
小众软件
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
AWS News Blog
AWS News Blog
W
WeLiveSecurity
Google DeepMind News
Google DeepMind News
I
InfoQ
Schneier on Security
Schneier on Security
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
The Exploit Database - CXSecurity.com
IT之家
IT之家
T
Threatpost
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
腾讯CDC
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
N
News and Events Feed by Topic
L
LINUX DO - 最新话题
F
Full Disclosure
大猫的无限游戏
大猫的无限游戏
H
Heimdal Security Blog
S
SegmentFault 最新的问题

Y先生的火箭屋

Java常用代码工具类 - Y先生的火箭屋 软件的七大设计原则 - Y先生的火箭屋 JavaSE使用socket与线程实现控制台版的聊天室功能 - Y先生的火箭屋 天天基金中持仓收益率和持有收益率的区别 - Y先生的火箭屋 在N个球中用天平称最少次数找出坏球 - Y先生的火箭屋 Java中23种设计模式 - Y先生的火箭屋 金融上的做多做空和杠杆 - Y先生的火箭屋 JVM调优常用的调优参数 - Y先生的火箭屋 基于EasyExcel的配置型导入导出V1.0 - Y先生的火箭屋
MySQL新增排名字段 - Y先生的火箭屋
Y先生 · 2022-06-16 · via Y先生的火箭屋

前言:MySQL在5.X的版本中,没有排名相关函数,如row_number()、rank()、dense_rank()等,所以需要用变量的方式去实现这个需求,下面本文简单对三种情况进行情况说明。

如下图为简单的测试数据:

测试数据

一、同分情况下,排名连续

SELECT
	t1.*,
	@rownum := @rownum + 1 AS rank 
FROM
	( SELECT * FROM `score` ORDER BY score DESC ) t1,
	( SELECT @rownum := 0 ) t2

如张三和李四分数相同,排名连续

二、同分情况下,同分排名相同且排名连续

SELECT
	t1.*,
	(
	CASE
			
			WHEN @rowtotal = score THEN
			@rownum 
			WHEN @rowtotal := score THEN
			@rownum := @rownum + 1 
			WHEN @rowtotal = 0 THEN
			@rownum := @rownum + 1 
		END 
		) AS rank 
	FROM
		( SELECT * FROM `score` ORDER BY score DESC ) AS t1,
		( SELECT @rownum := 0, @rowtotal := NULL ) t2

如张三李四田七,张三李四分数相同排名相同且田七的排名连续

三、同分情况下,同分排名相同但排名不连续

SELECT
	t1.*,
	@rownum := @rownum + 1 AS rank_tmp,
	@incrnum := ( CASE WHEN @rowtotal = t1.score THEN @incrnum WHEN @rowtotal := t1.score THEN @rownum END ) rank 
FROM
	( SELECT * FROM `score` ORDER BY score DESC ) t1,
	( SELECT @rownum := 0, @rowtotal := NULL, @incrnum := 0 ) t2

如张三李四田七,张三李四分数相同排名相同且李四占用了排名,田七排名不连续

|´・ω・)ノ

ヾ(≧∇≦*)ゝ

(☆ω☆)

(╯‵□′)╯︵┴─┴

 ̄﹃ ̄

(/ω\)

∠( ᐛ 」∠)_

(๑•̀ㅁ•́ฅ)

→_→

୧(๑•̀⌄•́๑)૭

٩(ˊᗜˋ*)و

(ノ°ο°)ノ

(´இ皿இ`)

⌇●﹏●⌇

(ฅ´ω`ฅ)

(╯°A°)╯︵○○○

φ( ̄∇ ̄o)

ヾ(´・ ・`。)ノ"

( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃

(ó﹏ò。)

Σ(っ °Д °;)っ

( ,,´・ω・)ノ"(´っω・`。)

╮(╯▽╰)╭

o(*////▽////*)q

>﹏<

( ๑´•ω•) "(ㆆᴗㆆ)

😂

😀

😅

😊

🙂

🙃

😌

😍

😘

😜

😝

😏

😒

🙄

😳

😡

😔

😫

😱

😭

💩

👻

🙌

🖕

👍

👫

👬

👭

🌚

🌝

🙈

💊

😶

🙏

🍦

🍉

😣

Source: github.com/k4yt3x/flowerhd