http://jimmod.com/blog/2008/09/displaying-row-number-rownum-in-mysql/からのクエリについて質問があります。
SELECT IF(@points=p.points, @rownum, @rownum:=@rownum+1) rank,
p.*, (@points:=p.points) dummy
FROM `ranking` p, (SELECT @rownum:=0) x, (SELECT @points:=0) y
ORDER BY `points` DESC
クエリの結果は次のとおりです。
rank user_id name score
-----------------------
1 4 Barney 100
2 2 Ted 88
3 1 Marshall 76
3 3 Robin 76
4 5 Lily 68
ユーザー ID に基づいて同じランク結果を得るにはどうすればよいですか?
以下のクエリはユーザー ID に基づいていますが、Robin のランクは 3 ではなく 4 になります。
SELECT rank FROM (SELECT @rownum:=@rownum+1 rank, p.*
FROM `ranking` p, (SELECT @rownum:=0) r
ORDER BY `points` DESC) a WHERE a.user_id = 3