如何选择MySQL中每个回答者给出的最新版本的答案?

时间:2009-12-06 06:26:52

标签: php sql mysql group-by

有一个场景。有一个问答网站。回答者可以修改他的答案,修改历史记录保存在服务器上。默认情况下,仅显示每个答案的最新版本。

select * from answers where questionid='$questionid' group by answerer_id 

所以我可以通过回答者对所有答案进行分组,然后我需要选择每个子组的最新版本。怎么做到这一点?

3 个答案:

答案 0 :(得分:1)

进行自我加入并找到没有更高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

或者,如果你有时间戳,你可以使用它。

答案 1 :(得分:0)

如果您使用的是自动增量ID,则可以根据最高ID进行选择。

可能的SQL:

select * from answers where questionid='$questionid' 
    and id in (select max(id) from answers group by answerer_id)

答案 2 :(得分:0)

GROUP BY子句似乎只使用第一个可用行,因此您可以尝试使用子查询重新排列它们,以便最新的答案位于最前面。

SELECT * 
FROM (
    SELECT * FROM `answers`
    WHERE questionid='$questionid'
    ORDER BY answerer_id DESC
) as `dyn_answers` 
GROUP BY answerer_id