2013-03-25 108 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