#mysql #sql
Вопрос:
Структура таблицы БД выше
Результат
Смотрите изображения
SELECT max(comment_date), comment_content FROM wp_comments WHERE comment_post_id = 8687
Он выбирает поле с последней датой, но неверным содержимым.
Я хочу реализовать это в приведенном ниже запросе, в котором уже есть один оператор GROUP BY и несколько СОЕДИНЕНИЙ, использование ограничения изменяет результат.
Ответ №1:
Ваш запрос должен завершиться ошибкой, потому что это запрос агрегации, и в нем нет group by
, но есть неагрегированные столбцы.
Простой способ сделать это использует order by
и limit
:
SELECT c.*
FROM wp_comments c
WHERE comment_post_id = 8687
ORDER BY comment_date DESC
LIMIT 1;
Ответ №2:
используйте соединение с той же таблицей с максимальной датой и найдите совпадение
SELECT comment_date, comment_content
FROM wp_comments a
JOIN (SELECT comment_post_id, max(comment_date) as maxdate FROM wp_comments) b ON
b.comment_post_id = a.comment_post_id
and b.maxdate = a.comment_date
WHERE comment_post_id = 8687
Ответ №3:
Выберите максимальную дату в подзапросе и выберите необходимые столбцы.
SELECT comment_date, comment_content
FROM wp_comments
WHERE comment_post_id = 8687
AND comment_date = (Select max(b.comment_date) from
wp_comment b)