使用ORDER BY对行进行编号

时间:2011-12-06 12:20:53

标签: mysql sql

SELECT @row := @row + 1 AS row, t.*
FROM some_table t, (SELECT @row := 0) r
ORDER BY t.title

我想对表中的行进行计算,并使用ORDER BY对其进行排序。

当我使用ORDER BY时,由于@row,用户变量ORDER BY不是1,2,3。 如何选择ORDER BY行且编号正确的行?

3 个答案:

答案 0 :(得分:3)

SELECT @rank:=@rank+1 rank FROM some_table t, (SELECT @rank:=0) r order by @rank

按任何其他字段排序

SELECT @rank:=@rank+1 rank FROM some_table t, (SELECT @rank:=0) r order by id desc

答案 1 :(得分:1)

select @row := @row + 1 as row,t.* from (
select * from some_table,(select @row:=0) as r order by title) as t

答案 2 :(得分:0)

首先需要预先返回结果集RANKED,然后为其分配行号

SELECT @row := @row + 1 AS row, 
       PreQuery.*
   FROM 
      ( select t.*
           from Some_Table t
           order by t.title ) PreQuery,
      (SELECT @row := 0) r

以这种方式执行此操作的唯一问题是它基本上会在表中运行2次...首先以正确的顺序获取记录,然后将它们应用于@row实现以正确地与相应的相关联秩。