sql >> Database teknologi >  >> RDS >> Mysql

mySQL-rangering i Highscore-Query

Ideen er at spørge, "hvor mange spillere rangerer over @this_user":

select count(*) + 1 from 
(
    /* list of all users */
    SELECT SUM( p.points ) AS sum_points
    FROM user u
    LEFT JOIN points p ON p.user_id = u.id
    GROUP BY u.id        
) x
/* just count the ones with higher sum_points */
where sum_points > (select sum(points) from points where user_id = @this_user)

Redigeret at gøre resultatet 1-baseret i stedet for 0-baseret



  1. MySQL-forespørgsel - får manglende poster ved brug af gruppe-by

  2. SQLite - ORDER BY RAND()

  3. Lagring af hierarkiske data (MySQL) til henvisningsmarkedsføring

  4. Hvordan opdaterer man alle rækker undtagen én række ud af mange, der opfylder den givne betingelse?