有时我只想获得每个相似值的一行,我通常会这样做:
SELECT * GROUP BY Text ORDER BY Date DESC
我使用 GROUP 选择相似行的问题是我没有从行中的最新行中获取值(我不太确定选择保留行的标准是什么)。我只想保留组中的最新行。
我知道如何使用自连接来做到这一点,但是当语句已经很长时,它似乎有点复杂。有没有更短的方法?也许使用 DISTINCT 而不是 GROUP BY?
假设您有一个包含多列的表,其中两列是GroupID
和DATE
。如果你想为每个选择最新的记录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
您是否尝试使用 max 功能:
SELECT A,B,max(Date) GROUP BY Text