So verwenden Sie DISTINCT und ORDER BY in derselben SELECT-Anweisung
Ausgeführte Abfragen geben häufig doppelte Daten zurück und die Reihenfolge dieser Daten erfolgt mithilfe von ORDER BY allein reicht möglicherweise nicht aus, um diese Duplikate zu entfernen. Durch die Kombination von DISTINCT und ORDER BY in einer einzigen SELECT-Anweisung können Entwickler jedoch Duplikate effizient entfernen und gleichzeitig die gewünschte Reihenfolge beibehalten.
Um dieses Problem zu beheben, muss die ORDER BY-Klausel die in der SELECT-Klausel verwendeten Spalten enthalten. Wenn DISTINCT verwendet wird, werden die Ergebnisse basierend auf den angegebenen Spalten gruppiert, wodurch Duplikate effektiv entfernt werden. Wenn sich die ORDER BY-Klausel jedoch auf Spalten bezieht, die nicht in DISTINCT enthalten sind, werden durch die Sortierung alle Zeilen mit demselben Wert in den SELECT-Spalten falsch gruppiert, was zu doppelten Ergebnissen führt.
Lösung:
Auflösen In diesem Fall sollte die Abfrage eine Aggregatfunktion wie MAX() verwenden, um nach der gewünschten Spalte (in diesem Fall Erstellungsdatum) zu sortieren. Zusätzlich wird eine GROUP BY-Klausel hinzugefügt, um die Ergebnisse nach den DISTINCT-Spalten (Kategorie) zu gruppieren. Diese Kombination stellt sicher, dass Duplikate entfernt werden und gleichzeitig die Reihenfolge der Ergebnisse erhalten bleibt. Die geänderte Abfrage würde wie folgt aussehen:
SELECT DISTINCT Category, MAX(CreationDate) FROM MonitoringJob GROUP BY Category ORDER BY MAX(CreationDate) DESC, Category
Diese überarbeitete Abfrage gibt die gewünschten Ergebnisse aus, entfernt Duplikate aus der Kategorie und sortiert sie in absteigender Reihenfolge nach Erstellungsdatum, gefolgt von der Kategorie.
Das obige ist der detaillierte Inhalt vonWie kombiniere ich DISTINCT und ORDER BY für eindeutige, geordnete Ergebnisse in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!