我有一个包含多列的mysql表。表格的主键是' id'柱。一行有多列但这个问题最相关的是'日期'这基本上是一个时间戳。如果我想按时间戳排序行,那么获取给定行id的顺序(排名)的有效方法是什么?最新的时间戳是等级1,第二个是等级2,依此类推。我想返回给定行的等级
编辑:我使用ORDER BY获取有序集,但我希望mysql语句返回特定项的顺序,而不是有序行。我也不想解析结果集,因为这是时间消耗
Edit2:例如假设下表
id timestamp name
1 Dec 4, 2016 Bob
2 Jan 1, 2015 Eve
3 Feb 6, 2017 Alice
鉴于id,我应该返回项目的顺序
id=1, expected output: 2
id=2, expected output: 3 (least recent)
id=3, expected output: 1 (most recent)
答案 0 :(得分:2)
回答编辑:使用row_number()over(order by)子句并放入一些* dummy
select ROW_NUMBER()over(order by (select1) ) as renk ,* from table
在有问题的编辑后回答..
select ROW_NUMBER()over(order by timestamp desc ) as renk ,* from table
答案 1 :(得分:1)
你好在mysql中试试这个
SET @rank=0;
SELECT t.rank FROM
(SELECT @rank:=@rank+1 AS rank, id
FROM `table_name`
ORDER BY timestamp DESC) t WHERE t.id=5;
答案 2 :(得分:0)
selct * from table where id>1 order by id asc limit 1
if( not date ){
selct * from table where id>0 order by id asc limit 1
}