0

有时我只想获得每个相似值的一行,我通常会这样做:

SELECT * GROUP BY Text ORDER BY Date DESC

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

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

4

2 回答 2

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

于 2012-11-23T05:57:41.027 回答
0

您是否尝试使用 max 功能:

SELECT A,B,max(Date) GROUP BY Text
于 2012-11-22T22:21:40.757 回答