重新排序SELECT LIMIT查询的输出

时间:2011-09-07 14:32:21

标签: mysql sorting

同道编码员,我有一个包含多个行的表,每个行都有一个日期列。我想选择最近的6个最近的行。我可以这样做:

SELECT * 
  FROM `Stats` 
  WHERE `ProjectID` = ?
  ORDER BY `StatsDate` DESC
  LIMIT 6

这将返回我需要的行,但它们以DESC日期顺序返回。我想要的是ASC日期顺序中的最后6行。如何重新排序SELECT的输出?有任何想法吗?

感谢

3 个答案:

答案 0 :(得分:2)

SELECT * 
FROM (
  SELECT * 
  FROM `Stats` 
  WHERE `ProjectID` = ?
  ORDER BY `StatsDate` DESC
  LIMIT 6
) s
ORDER BY s.StatsDate

答案 1 :(得分:0)

在外部查询中包围查询,并以不同的顺序排序。

SELECT * FROM
(
  SELECT * 
    FROM `Stats` 
    WHERE `ProjectID` = ?
    ORDER BY `StatsDate` DESC
    LIMIT 6
 ) s 
 ORDER BY `StatsDate` ASC 

答案 2 :(得分:0)

SELECT *
FROM (
FROM `Stats` 
WHERE `ProjectID` = ?
ORDER BY `StatsDate` DESC
LIMIT 6
) as t
ORDER BY t.`StatsDate` ASC;