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