GROUP BY类似值的最短路径并保留最新行?

时间:2012-11-22 21:56:59

标签: mysql sql

有时候我想得到每一个相似值的一行,我通常会做一些事情:

SELECT * GROUP BY Text ORDER BY Date DESC

使用GROUP选择相似行的问题是我没有从行中的最新行中获取值(我不太确定选择保留行的标准是什么)。我想只保留组中的最新行。

我知道如何通过自联接来实现它,但是当语句已经很长时,它似乎有点复杂。有没有更短的方法?也许使用DISTINCT而不是GROUP BY?

2 个答案:

答案 0 :(得分:1)

假设您有一个包含多列的表,其中两列是GroupIDDATE。如果您要为每个GroupID选择最新记录,则需要有一个子查询,其中包含每个Date的最新GroupID,例如

SELECT  a.*             -- this just selects all records from original table
FROM    tableName a
        INNER JOIN
        (
            -- this subquery gets the latest DATE entry for each GROUPID
            SELECT GroupID, MAX(DATE) maxDate   
            FROM tableName
            GROUP BY GroupID
        ) b ON a.GroupID = b.GroupID AND
                a.Date = b.maxDate

如果答案不明确,请询问:D

答案 1 :(得分:0)

您是否尝试使用max函数:

SELECT A,B,max(Date) GROUP BY Text