Gibt es eine Möglichkeit, eine automatisch inkrementierende Zahlenfolge in einer bestimmten Tabellenspalte mit T-SQL zu korrigieren?Zahlenfolge mit SQL korrigieren
Lets sagen, dass ich eine Tabelle, die wie folgt aussieht:
Id Bar Foo
2 5 1
3 6 1
21 7 1
22 16 1
154 17 1
176 18 1
Ich mag würde Reihen mit Foo = 1
in einer Art und Weise aktualisieren, dass sie die Bar
Spaltenreihenfolge von Reihe mit bestimmten Id
beginnend weiter (in diesem Fall können mit Id = 21
Zeile wählen) und gilt für alle folgenden Reihen auf der Id
Spaltenreihenfolge basiert
Das Endergebnis wäre:
Id Bar Foo
2 5 1
3 6 1
21 7 1
22 8 1
154 9 1
176 10 1
Für mehr Kontext:
Die Tabelle speichert Dateidaten für einen bestimmten Speicherort (Standort-ID ist "Foo" aus Beispiel). Jede Zeile ist eine Datei und hat ihre Dateinummer (Dateinummer ist 'Bar' aus Beispiel).
Die Dateinummer wird bei der Dateierstellung basierend auf der aktuell größten Dateinummer für diesen Speicherort bestimmt. Wegen irgendeines Fehlers hat die Dateinummer einiges vorausgelassen, was eine Lücke in der Dateinummernreihenfolge gelassen hat, und ich möchte diese Lücke mit T Sql beheben.
Wenn Sie "automatisch inkrementieren" sagen, worüber ** genau ** sprechen Sie? Eine Identitätsspalte? –
* Lässt die Zeile mit 'Id = 14' auswählen * ... es gibt keine solche Zeile in den bereitgestellten Daten –
Wenn Sie nur einen dummen Inkrementierungswert haben möchten, der keinen Einfluss auf die Daten hat (wenn Sie 16 auf 8 und 17 zurücksetzen können) bis 9 und das hat keine Auswirkungen, was ist der Punkt?), warum nicht einfach diese Sequenz generieren, wenn Sie die Daten abfragen? ROW_NUMBER() kann das tun, ohne eine Spalte zu haben, die Sie pflegen müssen. Das Problem beim Speichern dieser bedeutungslosen Daten besteht darin, dass Sie sie jedes Mal zurücksetzen müssen, wenn eine Zeile geändert wird. –