Не удается выбрать последнюю строку с максимальной датой

#mysql #sql

Вопрос:

1Структура таблицы БД выше

2 Результат

Смотрите изображения

 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)