mysql rank - 字段等于X的行号

时间:2013-12-01 23:01:19

标签: mysql

这是我的mysql DB: id,auth,name,points

我想要的是创建排名。因此,按点对所有记录进行排序,并获取 auth 字段等于“ 1 ”的行数

我在gooverflow档案中寻找这个,谷歌等。但是,我找不到我想要的东西。我试图自己做,但没有一个不适合我。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

SELECT a.iterator, a.id, a.name, a.points
FROM (    
    SELECT @rank:=@rank+1 AS iterator, id, name, points, auth
    FROM table, (SELECT @rank:=0) tmp
    ORDER BY points DESC) a
WHERE a.auth = 1

答案 1 :(得分:2)

这应该给你带有auth = 1的记录等级的记录:

SELECT * FROM 
(
  SELECT id, auth, name, points, @rownum := @rownum + 1 AS rank
  FROM (
    SELECT id, auth, name, points
    FROM yourTable
    ORDER BY points DESC
    ) a
  JOIN (
    SELECT @rownum := 0
    ) r
  ) b
WHERE b.auth = 1;

sqlfiddle demo