代码之家  ›  专栏  ›  技术社区  ›  Jim

如何通过显示最新数据行来使用Group

  •  0
  • Jim  · 技术社区  · 16 年前

    有人能告诉我如何使用group by子句吗?它是按表中的一个键分组的,但在顶部有最新的时间戳。我有多行数据,但我只想显示最新的行

    2 回复  |  直到 16 年前
        1
  •  1
  •   Andrew Moore    16 年前

    如果每组只需要最新的一个:

    SELECT somefield
    FROM table t1
    WHERE timestamp = (SELECT MAX(timestamp)
                       FROM table t2
                       WHERE t1.somefield = t2.somefield);
    

    或者只是最近的一个:

    SELECT somefield
    FROM table
    GROUP BY somefield
    ORDER BY MAX(timestamp) DESC
    LIMIT 1;
    
        2
  •  1
  •   lc.    16 年前

    我想你在找 ORDER BY 条款。

    SELECT Foo.Bar, Foo.SomeTimestamp
    FROM Foo
    ORDER BY Foo.SomeTimestamp DESC
    

    如果按列分组,则可能返回聚合数据。如果时间戳对于每行聚合数据都是唯一的,则可能需要使用 MAX 函数(或类似函数)为每个组返回一个时间戳。例如:

    SELECT Foo.TypeID, SUM(Foo.Price) AS Price, MAX(Foo.OrderDate) AS LastOrder
    FROM Foo
    GROUP BY Foo.TypeID
    ORDER BY MAX(Foo.OrderDate) DESC
    

    如果只需要第一行,可以使用 LIMIT 条款:

    SELECT Foo.Bar, Foo.SomeTimestamp
    FROM Foo
    ORDER BY Foo.SomeTimestamp DESC
    LIMIT 0, 1
    

    这从第0行开始,最多返回1行。