Heim  >  Artikel  >  Datenbank  >  Wie ordne ich Ergebnisse vor dem Gruppieren in MySQL?

Wie ordne ich Ergebnisse vor dem Gruppieren in MySQL?

Linda Hamilton
Linda HamiltonOriginal
2024-11-11 18:04:03866Durchsuche

How to Order Results Before Grouping in MySQL?

MySQL-Reihenfolge vor Gruppierung nach

In MySQL ordnet die Ausführung einer GROUP BY-Klausel normalerweise die Ergebnisse, nachdem die Gruppen gebildet wurden. Es gibt jedoch Szenarien, in denen Sie die Ergebnisse vor dem Gruppieren ordnen möchten.

Betrachten Sie die folgende 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 zielt darauf ab, den neuesten Beitrag für jeden Autor zu finden und ihn dann zu gruppieren Ergebnisse. Das Problem besteht jedoch darin, dass die Ergebnisse nach dem Gruppieren sortiert werden, nicht davor.

Lösung

Um die Ergebnisse vor dem Gruppieren zu ordnen, können Sie den folgenden Ansatz 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 stellt sicher, dass vor der Gruppierung nur der neueste Beitrag jedes Autors ausgewählt wird.

Alternative Lösung

In Fällen, in denen die HAVING Wenn die Klausel nicht durchführbar ist, wie beispielsweise in Postgres oder SQL Server, können Sie die folgende alternative Lösung verwenden:

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

Diese Abfrage verwendet eine Unterabfrage, um das maximale Veröffentlichungsdatum für jeden Autor zu ermitteln, und verknüpft es dann mit dem Originaltabelle zum Abrufen der tatsächlichen Beitragsdatensätze.

Das obige ist der detaillierte Inhalt vonWie ordne ich Ergebnisse vor dem Gruppieren in MySQL?. 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