有一種情況。有一個問答網站。回答者可以修改他的答案,修改的歷史記錄保存在服務器上。默認情況下,只顯示每個答案的最新版本。如何選擇每個答案者在MySQL中給出的答案的最新版本?
select * from answers where questionid='$questionid' group by answerer_id
因此,我可以通過回答者將所有答案分組,然後我需要選擇每個子組的最新版本。如何實現這一目標?
有一種情況。有一個問答網站。回答者可以修改他的答案,修改的歷史記錄保存在服務器上。默認情況下,只顯示每個答案的最新版本。如何選擇每個答案者在MySQL中給出的答案的最新版本?
select * from answers where questionid='$questionid' group by answerer_id
因此,我可以通過回答者將所有答案分組,然後我需要選擇每個子組的最新版本。如何實現這一目標?
GROUP BY子句似乎只使用第一個可用行,所以你可以嘗試使用一個子查詢重新安排他們,使最新的答案是在上面。
SELECT *
FROM (
SELECT * FROM `answers`
WHERE questionid='$questionid'
ORDER BY answerer_id DESC
) as `dyn_answers`
GROUP BY answerer_id
你的意思 SELECT * FROM ( SELECT * FROM'answers' WHERE questionid = '$ questionid' ORDER BY answer_id DESC )作爲'dyn_answers' GROUP BY answerer_id – Steven 2009-12-06 06:53:23
這正是我寫的,只是不表格名稱上的back-ticks ... – Atli 2009-12-06 06:56:28
PS,你可以將'SELECT *,COUNT(answerer_id)作爲'num_revisions''來獲得修訂版本號。 – Atli 2009-12-06 06:58:23
做自聯接,並沒有更高的ID找到用戶/問題:
SELECT a.*
FROM answers AS a
LEFT JOIN answers AS b
ON a.answerer_id = b.answerer_id
AND a.question_id = b.question_id
AND a.id < b.id
WHERE
b.id IS NULL
或者,如果你有一個戳,你可以使用它。
'MAX(date)'會得到最近的,但是你需要提供關於'ANSWERS'表中的列的更多細節。 – 2009-12-06 06:38:01
如果我想在此期間獲得修改的次數,該怎麼辦? – Steven 2009-12-06 06:50:14