Есть много похожих вопросов, которые можно найти здесь, но я не думаю, что любой ответ на вопрос адекватно.
Я продолжу с текущего наиболее популярного question и использую их пример, если это хорошо.
Задача в этом случае - получить последнюю запись для каждого автора в базе данных.
Пример запроса создает непригодные результаты, поскольку он не всегда является последним отправленным сообщением.
SELECT wp_posts.* FROM wp_posts
WHERE wp_posts.post_status='publish'
AND wp_posts.post_type='post'
GROUP BY wp_posts.post_author
ORDER BY wp_posts.post_date DESC
Текущий принятый ответ
SELECT
wp_posts.*
FROM wp_posts
WHERE
wp_posts.post_status='publish'
AND wp_posts.post_type='post'
GROUP BY wp_posts.post_author
HAVING wp_posts.post_date = MAX(wp_posts.post_date) <- ONLY THE LAST POST FOR EACH AUTHOR
ORDER BY wp_posts.post_date DESC
К сожалению, этот ответ прост и прост и во многих случаях дает менее стабильные результаты, чем исходный запрос.
Мое лучшее решение - использовать подзапрос формы
SELECT wp_posts.* FROM
(
SELECT *
FROM wp_posts
ORDER BY wp_posts.post_date DESC
) AS wp_posts
WHERE wp_posts.post_status='publish'
AND wp_posts.post_type='post'
GROUP BY wp_posts.post_author
Мой вопрос прост: Есть ли способ упорядочить строки перед группировкой, не прибегая к подзапросу?
Изменить. Этот вопрос был продолжением другого вопроса, и особенности моей ситуации несколько отличаются. Вы можете (и должны) предположить, что есть также wp_posts.id, который является уникальным идентификатором для этого конкретного сообщения.