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



选择以下所有内容:
从以下选项中选择等级,编号和温度:
从表中选择所有内容和行号作为排位,按ID降序排列
最后,仅输出可除以5的行号,其余为1


不要在这方面引用我,关于SQL的东西我是个大菜鸟。它对我有用,所以我很高兴。

最佳答案

似乎您只需要在三个查询之一中的所需列上按dec排序即可。我认为第二个按顺序适用于同一级别的选择。 ans,因为您希望您的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

09-11 14:46
查看更多