Heim >Datenbank >MySQL-Tutorial >Wie ordne ich MySQL-Ergebnisse vor der Gruppierung?

Wie ordne ich MySQL-Ergebnisse vor der Gruppierung?

Barbara Streisand
Barbara StreisandOriginal
2024-11-16 11:14:02396Durchsuche

How to Order MySQL Results Before Grouping?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn