Heim >Datenbank >MySQL-Tutorial >Wie ordne ich Daten vor der Gruppierung in MySQL an?
MySQL-Reihenfolge vor Gruppieren nach
Beim Abrufen von Daten aus einer Datenbank mit MySQL ist es oft wünschenswert, die Ergebnisse in einer bestimmten Reihenfolge zu sortieren . Wenn Sie jedoch die GROUP BY-Klausel zum Gruppieren von Daten verwenden, werden die Ergebnisse normalerweise nach der Gruppierung sortiert, was möglicherweise nicht zum gewünschten Ergebnis führt.
Im bereitgestellten Beispiel zielt die Abfrage darauf ab, den neuesten Beitrag abzurufen für jeden Autor und gruppieren Sie die Ergebnisse, aber die GROUP BY-Klausel führt dazu, dass die Beiträge nach der Gruppierung sortiert werden, was zu falschen Ergebnissen führt.
Um dieses Problem zu beheben, besteht ein alternativer Ansatz darin, eine Unterabfrage zu verwenden, um den neuesten Beitrag zu ermitteln Geben Sie für jeden Autor ein Datum ein, bevor Sie den Gruppenvorgang durchführen. Dies kann mit der folgenden modifizierten Abfrage erreicht werden:
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 DESC;
Diese Abfrage berechnet zunächst mithilfe einer Unterabfrage das späteste Veröffentlichungsdatum für jeden Autor und speichert es in einer temporären Tabelle t. Anschließend verknüpft es wp_posts mit t, um die Zeilen auszuwählen, die mit den neuesten Postdaten übereinstimmen, und gruppiert die Ergebnisse nach dem Autor. Abschließend werden die Ergebnisse in absteigender Reihenfolge nach dem Postdatum sortiert, um die neuesten Posts für jeden Autor zu erhalten.
Mit diesem Ansatz können Sie sicherstellen, dass die Posts vor dem Gruppieren sortiert werden und so die gewünschten Ergebnisse liefern ohne die Integrität des Gruppierungsvorgangs zu beeinträchtigen.
Das obige ist der detaillierte Inhalt vonWie ordne ich Daten vor der Gruppierung in MySQL an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!