Heim >Datenbank >MySQL-Tutorial >Wie ordne ich MySQL-Ergebnisse vor der Gruppierung?
MySQL: Ergebnisse vor dem Gruppieren sortieren
Beim Gruppieren von Ergebnissen in MySQL ist es wichtig, die Reihenfolge der Vorgänge zu verstehen. Standardmäßig ordnet MySQL die Ergebnisse nach der Gruppierung, was in bestimmten Fällen möglicherweise nicht das gewünschte Verhalten ist.
Ursprüngliche Abfrage und Einschränkung
Beachten Sie Folgendes Abfrage:
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
Diese Abfrage gruppiert die Ergebnisse korrekt, um nur den neuesten Beitrag für jeden Autor anzuzeigen. Die Ergebnisse werden jedoch nach der Gruppierung geordnet, sodass der neueste Beitrag möglicherweise nicht unbedingt am Anfang der Liste steht.
Lösung mit HAVING
Um die Ergebnisse zu ordnen Vor dem Gruppieren können wir die HAVING-Klausel verwenden:
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) ORDER BY wp_posts.post_date DESC
Die HAVING-Klausel filtert die Ergebnisse nach der Gruppierung und stellt sicher, dass nur die Zeilen mit dem maximalen post_date für jeden Autor zurückgegeben werden. Dadurch wird garantiert, dass der neueste Beitrag am Anfang der Liste angezeigt wird.
Alternative Lösung für andere Datenbanken
Bei Verwendung einer Datenbank, die die HAVING-Klausel nicht unterstützt ( B. Postgres oder SQL Server), besteht eine alternative Lösung darin, die Originaltabelle mit einer Unterabfrage zu verknüpfen, die das maximale post_date für jeden Autor berechnet:
SELECT wp_posts.* FROM wp_posts JOIN ( SELECT g.post_author MAX(g.post_date) AS post_date FROM wp_posts as g WHERE g.post_status='publish' AND g.post_type='post' GROUP BY g.post_author ) as t ON wp_posts.post_author = t.post_author AND wp_posts.post_date = t.post_date ORDER BY wp_posts.post_date
Das obige ist der detaillierte Inhalt vonWie ordne ich MySQL-Ergebnisse vor der Gruppierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!