Heim >Datenbank >MySQL-Tutorial >Wie erhalte ich Zeilennummern für eindeutige Werte in SQL mit DENSE_RANK()?

Wie erhalte ich Zeilennummern für eindeutige Werte in SQL mit DENSE_RANK()?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-29 03:08:09201Durchsuche

How to Get Row Numbers for Distinct Values in SQL Using DENSE_RANK()?

Unterscheiden von Zeilen mit eindeutigen Werten mithilfe von Row_Number in SQL

Das Schlüsselwort DISTINCT in SQL spielt eine entscheidende Rolle bei der Eliminierung doppelter Zeilen beim Abrufen von Daten. Dies reicht jedoch möglicherweise nicht aus, wenn Sie das eindeutige Vorkommen jedes Werts innerhalb einer Spalte identifizieren müssen. Hier kommt Row_Number ins Spiel, aber die Kombination mit DISTINCT kann schwierig sein.

Die betreffende Abfrage versucht, Zeilennummern für unterschiedliche Werte in der ID-Spalte anzuzeigen:

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

Allerdings , führt diese Abfrage zu den eindeutigen Werten von id, nicht zu den Zeilennummern für jeden eindeutigen Wert. Um das gewünschte Ergebnis zu erzielen, können Sie die Funktion DENSE_RANK() anstelle von DISTINCT verwenden:

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

DENSE_RANK() weist aufeinanderfolgende Zeilennummern eindeutigen Werten zu, im Gegensatz zu ROW_NUMBER(), das doppelten Werten Lücken zuweist. Durch die Kombination von DENSE_RANK() mit DISTINCT können Sie die Zeilennummern für jeden eindeutigen ID-Wert abrufen und so die notwendigen Informationen für die weitere Analyse oder Verarbeitung bereitstellen.

Das obige ist der detaillierte Inhalt vonWie erhalte ich Zeilennummern für eindeutige Werte in SQL mit DENSE_RANK()?. 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