Es besteht keine Notwendigkeit, analytische Funktionen zu vermeiden, wenn Ihre Datenbank sie unterstützt, z. B. ROW_NUMBER()
SELECT
ROW_NUMBER() OVER (ORDER BY [<PRIMARYKEY_COLUMN_NAME>]) AS Number
FROM
[<TABLE_NAME>]
Die Syntax ist Func([ arguments ]) OVER (analytic_clause)
Sie müssen sich auf OVER () konzentrieren. Diese letzten Klammern erstellen Partition(en) Ihrer Zeilen und wenden Func() nacheinander auf diese Partitionen an. Im obigen Code haben wir nur einen einzelnen Satz/eine einzelne Partition von Zeilen. Daher gilt die generierte Sequenz für alle Zeilen.
Sie können mehrere Sätze Ihrer Daten erstellen und die Sequenznummer für jeden auf einmal generieren. Wenn Sie beispielsweise eine Sequenznummer für alle Zeilen generieren müssen, haben diese die gleiche categoryId. Sie müssen nur Partition By
hinzufügen Klausel wie diese (PARTITION BY categoryId ORDER BY [<PRIMARYKEY_COLUMN_NAME>])
.
Denken Sie daran, dass nach FROM
Sie können auch einen weiteren zusätzlichen ORDER BY
verwenden um Ihre Daten anders zu sortieren. Aber es hat keine Auswirkung auf das OVER ()