MYSQL SELECT rank of user (more than x & less than y)

前端 未结 2 977
孤独总比滥情好
孤独总比滥情好 2021-01-16 17:39

I\'m a bit stuck with a php/Mysql Query. I got 2 tables :

  table_users              table_ranks
----------------    ------------------------
| id  | points          


        
2条回答
  •  清歌不尽
    2021-01-16 17:59

    give this a try, a little bit messy due to table design,

    SELECT  u.*, r.name
    FROM    table_users u
            INNER JOIN
            (
                SELECT x.name, 
                       x.points_needed start_point, 
                       COALESCE(y.points_needed - 1, 2000000) end_point
                FROM
                (
                  SELECT name, points_needed, @rank:=@rank+1 ranks
                  FROM table_ranks a, (SELECT @rank:=0) b
                  ORDER BY points_needed
                ) x
                LEFT JOIN 
                (
                  SELECT name, points_needed, @rank1:=@rank1+1 ranks
                  FROM table_ranks a, (SELECT @rank1:=0) b
                  ORDER BY points_needed
                ) y ON x.ranks+1 = y.ranks
            ) r ON u.points BETWEEN r.start_point AND r.end_point
    
    • SQLFiddle Demo

提交回复
热议问题