Как выбрать последнюю версию ответов, данных каждым ответчиком в MySQL?

0

Существует сценарий. Существует веб-сайт с запросом и ответом. Ответчик может изменить свой ответ, а история изменений сохраняется на сервере. По умолчанию отображается только последняя версия каждого ответа.

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

Итак, я могу сгруппировать все ответы ответчиком, тогда мне нужно выбрать последнюю версию каждой подгруппы. Как достичь этого?

  • 1
    MAX(date) получит самое последнее, но вам нужно предоставить более подробную информацию о столбцах в таблице ANSWERS .
  • 0
    Что, если я хочу получить количество модификаций за это время?
Теги:
group-by

3 ответа

0
Лучший ответ

Предложение GROUP BY, по-видимому, просто использует первую доступную строку, поэтому вы можете попробовать использовать подзапрос, чтобы перенастроить их, чтобы последний ответ был сверху.

SELECT * 
FROM (
    SELECT * FROM `answers`
    WHERE questionid='$questionid'
    ORDER BY answerer_id DESC
) as `dyn_answers` 
GROUP BY answerer_id
  • 0
    Вы имеете в виду SELECT * FROM (SELECT * FROM answers WHERE questionid = '$ questionid' ORDER BY answer_id DESC) как dyn_answers GROUP BY answerer_id
  • 0
    Это именно то, что я написал, просто без галочек на именах таблиц ...
Показать ещё 1 комментарий
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

Или, если у вас есть метка времени, вы можете использовать ее.

0

Если вы используете идентификаторы автоинкремента, вы можете выбрать на основе самого высокого идентификатора.

Возможный SQL:

select * from answers where questionid='$questionid' 
    and id in (select max(id) from answers group by answerer_id)
  • 0
    Это решение.
  • 0
    Что, если я хочу получить количество модификаций за это время?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню