2013-04-15 45 views
0

我有下面的一些示例數據表。獲取最新的系列號的最大記錄數

Record_ID Counter Serial Owner 
1   0   AAA  Jack 
2   1   AAA  Kevin 
3   0   BBB  Jane 
4   1   BBB  Wendy 

基於類似上述數據,我想寫爲MySQL的SQL查詢每Serial數量最大Counter值獲得該記錄。 我似乎遇到問題的部分是獲取查詢以獲取已更新的最後50個唯一序列號。

以下是我現在根據this StackOverflow question提出的查詢。

SELECT * 
FROM `history` his 
    INNER JOIN(SELECT serial, 
        Max(counter) AS MaxCount 
       FROM `tracking` 
       WHERE serial IN (SELECT serial 
           FROM `history`) 
       GROUP BY serial 
       ORDER BY record_id DESC) q 
      ON his.serial = q.serial 
       AND his.counter = q.maxcount 
LIMIT 0, 50 
+0

哪裏是在你的子查詢的WHERE子句的地步? – Limey

+0

我的意思是最初刪除它,但是'WHERE串行輸入(SELECT serial FROM FROM \'history \''是我試圖創建另一個子查詢來選擇最近更新的50個唯一序列號。 – musubi

+0

是不是MySQL支持Top 50命令? – Limey

回答

1

它看起來像一個典型的問題,可以通過這樣的事情來解決:

select his.Record_ID, his.Counter, his.Serial, his.Owner 
from History his 
inner join(
    select Serial, max(Counter) Counter 
    from History 
    group by Serial 
) ss on his.Serial = ss.Serial and his.Counter = ss.Counter 

如果您有您的數據集具體的過濾器,你應該申請上述過濾器子查詢。

在這裏的問題有更多的解釋的另一個來源:SQL Select only rows with Max Value on a Column

+0

這個解決方案是否解決了返回最後一次更新的序列號時只有50個條目的問題? – zavg

+0

@AdrianCarneiro感謝您的回答,但它似乎沒有返回最新的50個唯一序列。 – musubi