MySQL-Reihenfolge vor der Gruppierung nach
Es gibt hier viele ähnliche Fragen, aber ich denke nicht, dass sie die Frage angemessen beantworten.
Ich gehe weiter von der aktuell beliebtestenFrage und benutze ihr Beispiel, wenn das in Ordnung ist.
Die Aufgabe in dieser Instanz besteht darin, den neuesten Beitrag für jeden Autor in der Datenbank abzurufen.
Die Beispielabfrage führt zu unbrauchbaren Ergebnissen, da es sich nicht immer um den letzten zurückgegebenen Beitrag handelt.
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
Die aktuell akzeptierte Antwort lautet
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
Leider ist diese Antwort einfach falsch und führt in vielen Fällen zu weniger stabilen Ergebnissen als die ursprüngliche Abfrage.
Meine beste Lösung ist die Verwendung einer Unterabfrage des Formulars
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
Meine Frage ist also einfach:Gibt es trotzdem eine Möglichkeit, Zeilen vor dem Gruppieren zu bestellen, ohne auf eine Unterabfrage zurückzugreifen?
Bearbeiten: Diese Frage war eine Fortsetzung einer anderen Frage und die Besonderheiten meiner Situation sind etwas anders. Sie können (und sollten) davon ausgehen, dass es auch eine wp_posts.id gibt, die eine eindeutige Kennung für diesen bestimmten Beitrag darstellt.