2013-03-25 107 views
1
SELECT AnotherID, TID, TDate, COUNT(*) AS Total 
FROM MyTable 
GROUP BY TID 
HAVING Total > 1 

上面的查询返回多个记录具有相同TID的记录。现在我需要选择最新的日期。选择按字段分组的最新记录MySQL

上面的查询返回TDate,但它不是最近的一个,基本上我需要按TID,并得到那些记录,TDate是最近的。我只需要获取多个记录相同的记录TID

感谢您的帮助。

注:不能使用MAX(TDate),因为它没有选择正确的AnotherID

+0

...'MAX(TDate)'? – Kermit 2013-03-25 14:34:03

+0

请查看更新后的问题 – GGio 2013-03-25 14:37:06

+0

请阅读有关如何使用'GROUP BY'的文档,而不使用MySQL的扩展 – Kermit 2013-03-25 14:37:57

回答

2

假设TDate的数据类型为datedatetime的,然后MAX(TDate)西港岛线给你的每个分组的最后日期TID

SELECT t1.AnotherId, t1.TID, t2.MaxTDate, t2.Total 
FROM MyTable AS t1 
INNER JOIN 
(
    SELECT TID, MAX(TDate) AS MaxTDate, COUNT(*) AS Total 
    FROM MyTable 
    GROUP BY TID 
    HAVING Total > 1 
) AS t2 ON t1.TID = t2.TID 
     AND t1.TDate = t2.MaxTDate; 
+0

请检查更新的问题 – GGio 2013-03-25 14:39:53

+0

@GGio - 请检查更新的答案。 – 2013-03-25 14:42:50

+0

这种工作方式,但对于那些具有相同TDate和TID的记录作为重复出现。我需要有一个TID和最新的一个,不能有2个TID – GGio 2013-03-25 14:46:33