mysql语句,用于获取有序结果集中给定行id的等级

时间:2016-11-17 05:18:21

标签: php mysql

我有一个包含多列的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)

3 个答案:

答案 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
}