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
不要引用我的话,我是一个关于SQL东西的大菜鸟。它对我有用,所以我很高兴。
答案 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