DocID |更新日期|可采用DocName
8245376 | 8/26/2009 1:07:01 PM |文档1
8245376 | 8/26/2009 4:07:04 PM |文档1
8245376 | 8/26/2009 7:07:01 PM |文档2
8245376 | 8/26/2009 2:07:03 PM |文档2
646681 | 8/26/2009 1:07:01 PM |文档3
263272 | 8/26/2009 1:07:01 PM |文档4
8245376 | 8/26/2009 1:07:01 PM | Doc5
8245376 | 8/26/2009 2:07:10 PM | Doc5
8245376 | 8/26/2009 1:07:01 PM |文档6
8245376 | 8/26/2009 10:07:01 PM |文档6
1903875 | 8/26/2009 1:07:01 PM | Doc7
从上面的记录集中,如何根据更新的日期检索唯一的行,即检索最近更新的记录?
感谢, 格塔
答案 0 :(得分:2)
select * from table t1 join(select docid,max(dateupdated)as dateupdated from table group by docid)t2 on t1.docid = t2.docid and t1.dateupdated = t2.dateudated
答案 1 :(得分:0)
这假设您只想保留每个DocId最近更新的内容。我正在使用SQL Server DELETE语句,但我必须通过连接相关字段来作弊,以便我可以使用WHERE NOT IN
子句。还有其他方法,但这很简洁。
DELETE
FROM Docs
WHERE CAST(DocId AS VARCHAR) + '_' +
CAST(Date_Updated AS VARCHAR) NOT IN
(
SELECT CAST(DocId AS VARCHAR) + '_' +
CAST(MAX(Date_Updated) AS VARCHAR)
From Docs
GROUP BY DocId
)
答案 2 :(得分:0)
select distinct DocID, max("Date Updated") from mytable group by DocID