有时候我想得到每一个相似值的一行,我通常会做一些事情:
SELECT * GROUP BY Text ORDER BY Date DESC
使用GROUP选择相似行的问题是我没有从行中的最新行中获取值(我不太确定选择保留行的标准是什么)。我想只保留组中的最新行。
我知道如何通过自联接来实现它,但是当语句已经很长时,它似乎有点复杂。有没有更短的方法?也许使用DISTINCT而不是GROUP BY?
答案 0 :(得分:1)
假设您有一个包含多列的表,其中两列是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
答案 1 :(得分:0)
您是否尝试使用max函数:
SELECT A,B,max(Date) GROUP BY Text