选择Grouped By字段的最新记录MySQL

时间:2013-03-25 14:32:32

标签: mysql sql

SELECT AnotherID, TID, TDate, COUNT(*) AS Total
FROM MyTable
GROUP BY TID
HAVING Total > 1

上述查询返回多条记录具有相同TID的记录。现在我需要选择最新的日期。

以上查询返回 TDate ,但它不是最新的,基本上我需要按TID分组并获取 TDate 最近的记录。我只需要获取多条记录具有相同 TID 的记录。

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

1 个答案:

答案 0 :(得分: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;