我正在嘗試爲在線編碼事件網站編寫查詢,但我發現處理起來特別困難。SQL查詢疑難問題
我有一個表意見:
submissions => subid | uid | pid | subts | status
uid = userid
pid = problem id
subts = timestamp when the submission was submitted
status = whether the answer is right or not
用戶可能做出多次提交對給定PID。
我想知道:誰是每個問題提交解決方案的最新用戶?
現在,我不在乎解決方案是對還是錯。
我雖然會工作的查詢是
select pid, uid, max(subts) from submissions group by pid;
但它不工作,我希望它的方式。這個查詢找到最大值ts,但與其關聯的uid不正確。
任何人都可以教我什麼是我的查詢錯?以及爲我的目的編寫查詢的正確方法是什麼?
謝謝
注意:我正在使用mysql。
編輯:我可以遍歷所有的PID,並寫入
select pid, uid, max(subts) from submissions where pid=$pid order by subts desc limit 1;
做到這一點,但我真的不希望這樣做。我想知道一個查詢是否可以完成我想要的。如果是,我想知道如何。
注意:「對於給定的問題」是指「你有一個特定的問題」,例如, 「問題#1234」; 「對於每一個問題」意味着「你有一系列問題」,即「針對數據庫中的每個問題」。正如你所看到的,這些不是等同的,解決方案是非常不同的。 – Piskvor 2010-02-12 10:56:04