MySQL запрос, чтобы получить список последних обновленных страниц, но только один результат для каждого слага? - PullRequest
1 голос
/ 01 августа 2010

У меня есть таблица для страниц с полями slug (строка, не уникальная) и updated (дата / время).Я хочу получить список последних обновленных страниц на основе поля updated, но мне нужен только один результат на каждые slug (поскольку в этом случае слагы могут быть повторно использованы на страницах).Что делать?

Я пробовал это:

SELECT * FROM `pages`
GROUP BY `slug`
ORDER BY `updated` DESC

Это дает только один результат на слаг, но не всегда последний обновленный.

Ответы [ 2 ]

1 голос
/ 01 августа 2010

Это MSSQL, но он возвращает «связи», если страница обновляется 2 или более раз в одно и то же время.

SELECT * FROM pages
WHERE Updated In
(
SELECT Max(Updated)
FROM pages
GROUP BY slug
)
0 голосов
/ 01 августа 2010

Это должно работать для вас:

SELECT *
FROM pages p1
LEFT JOIN pages p2 ON p1.slug = p2.slug AND p1.updated < p2.updated
WHERE p2.updated IS NULL
ORDER BY p1.updated DESC

См. http://dev.mysql.com/doc/refman/5.1/en/example-maximum-column-group-row.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...