Heim >Datenbank >MySQL-Tutorial >Wie interagiert DISTINCT mit ROW_NUMBER() und wie kann ich eindeutige Zeilennummern in SQL erhalten?

Wie interagiert DISTINCT mit ROW_NUMBER() und wie kann ich eindeutige Zeilennummern in SQL erhalten?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-26 03:13:09431Durchsuche

How Does DISTINCT Interact with ROW_NUMBER() and How Can I Get Unique Row Numbers in SQL?

Verstehen des Schlüsselworts DISTINCT und der Funktion ROW_NUMBER()

Bei der Arbeit mit Daten in SQL ist es oft notwendig, nur die eindeutigen Zeilen abzurufen von einem Tisch. Zu diesem Zweck wird typischerweise das Schlüsselwort DISTINCT verwendet, da es doppelte Zeilen aus der Ergebnismenge eliminiert. In Kombination mit der Funktion ROW_NUMBER() verhält sich das Schlüsselwort DISTINCT jedoch möglicherweise anders.

Funktion ROW_NUMBER() und eindeutige Werte

Die Funktion ROW_NUMBER() weist a zu eindeutige fortlaufende Nummer für jede Zeile in einer Tabelle. Standardmäßig werden die Zeilen nach ihrer Position in der Tabelle sortiert. Sie können jedoch mithilfe der ORDER BY-Klausel eine andere Sortierreihenfolge angeben.

In der bereitgestellten Abfrage wird die Funktion ROW_NUMBER() zusammen mit dem Schlüsselwort DISTINCT verwendet:

SELECT DISTINCT id, ROW_NUMBER() OVER (ORDER BY id) AS RowNum
FROM table
WHERE fid = 64

Ziel dieser Abfrage ist um alle Zeilennummern eindeutiger Werte in der ID-Spalte anzuzeigen. Es werden jedoch nur die eindeutigen Werte zurückgegeben, ohne die Zeilennummern anzuzeigen.

Lösung mit der Funktion DENSE_RANK()

Um das gewünschte Ergebnis zu erzielen, können Sie DENSE_RANK( )-Funktion anstelle von ROW_NUMBER(). Die Funktion DENSE_RANK() weist jedem eindeutigen Wert in einer Tabelle eindeutige fortlaufende Nummern zu, unabhängig von der Reihenfolge der Zeilen.

Die korrigierte Abfrage mit DENSE_RANK():

SELECT DISTINCT id, DENSE_RANK() OVER (ORDER BY id) AS RowNum
FROM table
WHERE fid = 64

Diese Abfrage gibt die unterschiedlichen Werte in der ID-Spalte zusammen mit den entsprechenden Zeilennummern zurück und erfüllt damit die ursprüngliche Anforderung.

Das obige ist der detaillierte Inhalt vonWie interagiert DISTINCT mit ROW_NUMBER() und wie kann ich eindeutige Zeilennummern in SQL erhalten?. 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