按降序选择每个第n行

时间:2017-05-02 18:34:56

标签: mysql sql-order-by

SELECT * FROM ( SELECT @row := @row +1 AS rownum, [column name] FROM ( SELECT * FROM [table name] ) WHERE rownum % 5 = 1

确实每5行返回一次,但按升序排列。我想要的是它首先获取所有数据,按降序排列然后应用过滤器。

如果您先过滤它然后按降序排列,它将不会以添加的最新数据开始(4/5时间)。

我想知道应该怎么做。

提前致谢

编辑:对于有相同问题的人,这就是我使用的:

SELECT * FROM
(SELECT rank, id, Temperature FROM 
(SELECT *, @rownum := @rownum + 1 AS rank FROM temperature_room1, 
(SELECT @rownum := 0) r) AS T ORDER BY id DESC) AS J WHERE rank % 5 = 1
  1. 选择以下所有内容:
  2. 从以下位置选择排名,ID和温度:
  3. 选择所有内容并将rownumber列为表中的排名,按ID顺序按降序排列
  4. 最后,只输出可以除以5的行数,余数为1
  5. 不要引用我的话,我是一个关于SQL东西的大菜鸟。它对我有用,所以我很高兴。

1 个答案:

答案 0 :(得分:0)

看起来你只需要在三个查询之一中的所需列上按dec来命令。我认为第二个作为order by适用于同一级别的select。因为你想要你的rownum命令desc ...似乎就是那个地方...

SELECT * 
FROM ( SELECT @row := @row +1 AS rownum, [column name] 
       FROM ( SELECT * FROM [table name] )
       ORDER BY [column name] desc
     )

WHERE rownum % 5 = 1