[sql]
SELECT user_id, (
SELECT COUNT(1) FROM user_scores WHERE score >= (
SELECT score
FROM user_scores
WHERE user_id = '" . $user_id . "' AND " . $condition . " ORDER BY score DESC LIMIT 1
)
AND " . $condition . "
) AS rank
FROM user_scores
WHERE user_id = '" . $user_id . "' AND " . $condition;
[/sql]
《高性能 MySQL》第二版,介绍用户自定义变量时,有列举一排序,笔记于这里
[sql]
SET @curr_cnt := 0, @prev_cnt := 0, @rank := 0;
SELECT actor_id,
@curr_cnt := AS cnt,
@rank := IF(@prev_cnt <> @curr_cnt, @rank + 1, @rank) AS rank,
@prev_cnt := @curr_cnt AS dummy
FROM (
SELECT actor_id, COUNT(*) AS cnt,
FROM sakia.film_actor
GROUP BY actor_id
ORDER BY cnt DESC
LIMIT 10
) AS der;
[/sql]
没有评论 :
发表评论