【问题标题】:re-sorting the output of a SELECT LIMIT query重新排序 SELECT LIMIT 查询的输出
【发布时间】:2011-09-07 14:32:21
【问题描述】:

各位程序员,我有一个表,其中包含许多行,每行都有一个日期列。我想选择最后 6 个最近的行。我可以这样做:

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

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

谢谢

【问题讨论】:

标签: mysql sorting


【解决方案1】:
SELECT * 
FROM (
  SELECT * 
  FROM `Stats` 
  WHERE `ProjectID` = ?
  ORDER BY `StatsDate` DESC
  LIMIT 6
) s
ORDER BY s.StatsDate

【讨论】:

    【解决方案2】:

    将查询包围在外部查询中并以不同的顺序对其进行排序。

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

    【讨论】:

      【解决方案3】:
      SELECT *
      FROM (
      FROM `Stats` 
      WHERE `ProjectID` = ?
      ORDER BY `StatsDate` DESC
      LIMIT 6
      ) as t
      ORDER BY t.`StatsDate` ASC;
      

      【讨论】:

        猜你喜欢
        • 2012-05-03
        • 1970-01-01
        • 2020-11-24
        • 2016-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-27
        • 2015-11-13
        相关资源
        最近更新 更多