Как получить максимальное значение даты?

Добрый день.
Необходимо одним запросом получить последний статус объявления: sqlfiddle.com/#!9/f85016/2/0
Вижу, что должно отображаться так:
Advertisement 3 | 2022-02-14T08:12:39Z | UPDATED_BY_ADMIN

Однако, в моём запросе возвращаются 3 статуса, и нужно получить самый актуальный, в соответствие с датой.
Думал применить MAX(s.date) - но видимо не туда пишу и получаю ошибку.
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
@Dark_Dante
SELECT a.title, s.date, t.status
FROM adverts a
LEFT JOIN sys_advert_statuses s ON a.id = s.ad_id
LEFT JOIN sys_advert_status_types t ON s.status_id = t.id
WHERE s.status_id IN (3, 5, 6) AND a.id = 4
ORDER BY s.date DESC
LIMIT 1
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
MySQL 8 solution
WITH records AS (
  SELECT 
	  a.title, 
	  s.date, 
  	  t.status,
	  ROW_NUMBER() OVER (PARTITION BY a.id ORDER BY s.date DESC) rn 
  FROM adverts a
  LEFT JOIN sys_advert_statuses s ON a.id = s.ad_id
  LEFT JOIN sys_advert_status_types t ON s.status_id = t.id
  WHERE 
	  s.status_id IN (3, 5, 6) 
	  AND a.id = 4
) SELECT title, date, status FROM records WHERE rn = 1;


MySQL 8 online
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы