在mysql查询中获得一行的排名

时间:2012-11-03 12:34:03

标签: mysql sql rank

我正在使用此查询根据他们获得的投票为每个名称分配排名,但它会返回错误:

  

1248 - 每个派生表必须有自己的别名

这是我的代码:

SELECT @rownum:=@rownum+1 AS rank, name, vote 
FROM table, (SELECT @rownum:=0) ORDER BY vote DESC

将查询修改为: -

SELECT @rownum:=@rownum+1 AS rank, name, vote 
FROM table ORDER BY vote DESC

我得到的查询等级为NULL。任何帮助,如何获得第一名的排名?

注意:我不是在寻找任何其他解决方案。只是尝试在查询本身中执行此操作。

1 个答案:

答案 0 :(得分:6)

错误很清楚。每个派生表都必须有自己的别名。你需要像(SELECT @rownum := 0)那样别名:

SELECT 
  @rownum := @rownum + 1 AS rank, 
  name,
  vote 
FROM table, (SELECT @rownum := 0) t --This what you were missing an alias
ORDER BY vote DESC

SQL Fiddle Demo