sql选择最后n行,对它们进行反向排序

时间:2019-09-25 12:53:10

标签: mysql sql

我需要从有序(按datetime)表中获取最后9行。

自从我使用...

SELECT fecha_hora
  , estado_viejo
FROM cambios_de_estado 
WHERE usuario_id = '35512'
ORDER BY fecha_hora DESC
LIMIT 9

...输出反转。

我需要先下订单。

查询时间更长。这对我来说是棘手的部分。

3 个答案:

答案 0 :(得分:1)

使用子查询:

SELECT ce.*
FROM (SELECT fecha_hora, estado_viejo
      FROM cambios_de_estado 
      WHERE usuario_id= '35512'
      ORDER BY fecha_hora DESC
      LIMIT 9
     ) ce
ORDER BY fecha_hora ASC

答案 1 :(得分:1)

您可以将查询包装在另一个查询中,按fecha_hora列升序对外部查询进行排序:

SELECT t.*
FROM (
  SELECT fecha_hora
    , estado_viejo
  FROM cambios_de_estado 
  WHERE usuario_id = '35512'
  ORDER BY fecha_hora DESC
  LIMIT 9
) AS t
ORDER BY t.fecha_hora ASC

答案 2 :(得分:1)

由于不清楚,您可能需要重新编辑提问方式。

但是您可能需要使用

ASC代替DESC

ASC表示旧日期到新日期(递增) DESC表示新日期到旧日期(递减)

SELECT fecha_hora
  , estado_viejo
FROM cambios_de_estado 
WHERE usuario_id = '35512'
ORDER BY fecha_hora ASC
LIMIT 9