Heim >Datenbank >MySQL-Tutorial >Wie kann ich doppelte Zeilen entfernen und gleichzeitig die Reihenfolge in einer SQL-SELECT-Anweisung beibehalten?

Wie kann ich doppelte Zeilen entfernen und gleichzeitig die Reihenfolge in einer SQL-SELECT-Anweisung beibehalten?

DDD
DDDOriginal
2025-01-07 09:21:42666Durchsuche

How Can I Remove Duplicate Rows While Maintaining Order in a SQL SELECT Statement?

Verwendung von DISTINCT und ORDER BY in derselben SELECT-Anweisung

Nach dem Ausführen einer SELECT-Anweisung wird die Kategoriespalte aus der MonitoringJob-Tabelle abgerufen und sortiert Wenn die Ergebnisse nach der Spalte „CreationDate“ in absteigender Reihenfolge angezeigt werden, gibt die Datenbank möglicherweise doppelte Werte zurück. Um Duplikate zu entfernen und gleichzeitig die angegebene Reihenfolge beizubehalten, kann das Schlüsselwort DISTINCT verwendet werden. Die alleinige Verwendung von DISTINCT reicht jedoch möglicherweise nicht aus.

Im bereitgestellten Beispiel wird das Problem durch die alleinige Verwendung des DISTINCT-Schlüsselworts nicht gelöst, da die ORDER BY-Klausel auf der CreationDate-Spalte basiert, die doppelte Werte enthält. Um dieses Problem zu beheben, kann eine Aggregatfunktion wie MAX() mit dem Schlüsselwort DISTINCT kombiniert werden, um die Ergebnisse basierend auf einer bestimmten Spalte zu sortieren und gleichzeitig Duplikate auszuschließen. Darüber hinaus ist eine GROUP BY-Klausel erforderlich, um eindeutige Kategorien basierend auf der in der DISTINCT-Operation verwendeten Spalte zu erstellen.

Eine geeignete Lösung wäre:

SELECT DISTINCT Category, MAX(CreationDate)
FROM MonitoringJob
GROUP BY Category
ORDER BY MAX(CreationDate) DESC, Category

Diese geänderte Anweisung stellt sicher, dass Duplikate entstehen werden unter Beibehaltung der gewünschten Reihenfolge entfernt, indem nach der Spalte MAX(CreationDate) und dann nach Kategorie sortiert wird. Als Ergebnis wird die gewünschte Ausgabe erhalten, die die verschiedenen Kategorien in absteigender Reihenfolge basierend auf ihren neuesten CreationDate-Werten auflistet.

Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Zeilen entfernen und gleichzeitig die Reihenfolge in einer SQL-SELECT-Anweisung beibehalten?. 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