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
行且编号正确的行?
答案 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实现以正确地与相应的相关联秩。