ROW_NUMBER() ohne ORDER BY in SQL Server 2005
In SQL Server 2005 kann die Funktion ROW_NUMBER() verwendet werden, um eine zu generieren eindeutige fortlaufende Nummer für jede Zeile in einer Ergebnismenge. Im Gegensatz zu seinen Gegenstücken in späteren Versionen erfordert ROW_NUMBER() in SQL Server 2005 jedoch eine explizite ORDER BY-Klausel. Diese Einschränkung stellt eine Herausforderung dar, wenn versucht wird, fortlaufende Zahlen zu generieren, ohne die ursprüngliche Reihenfolge der Daten zu ändern.
Lösung:
Um diese Einschränkung zu umgehen, können wir auf die Angabe verzichten eine explizite Bestellung mithilfe der folgenden Abfrage Syntax:
INSERT INTO TargetTable (ID, FIELD) SELECT Row_Number() OVER (ORDER BY (SELECT 1)) + Coalesce( (SELECT Max(ID) FROM TargetTable WITH (TABLOCKX, HOLDLOCK)), 0 ), FieldValue FROM SourceTable WHERE {somecondition};
Erklärung:
Überlegungen:
Das obige ist der detaillierte Inhalt vonWie kann ich ROW_NUMBER() ohne ORDER BY in SQL Server 2005 verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!