2017-06-14 3 views
0

Ich benutze SQL Server Management Studio 2014.Auto-Nummer nach Reset-Zählung für jede andere Spalte Wert

Ich habe 2 Tabellen: Land und Standorte.

Land hat eine Eigenschaft Id und andere Spalten.

Standorte haben eine Eigenschaft Id, LocationNumber, CountryId.

In der alten Anwendung gespeichert die Daten für locationNumber falsch, wenn Sie eine löschen würden.

Also ich versuche, alle Standortnummern zurückzusetzen und es erneut einzufügen.

Nehmen wir an, ich habe diesen Datensatz:

Orte:

Id | LocationNumber | CountryId 
------------------------------- 
1 |  1  |  1 
2 |  3  |  1 
3 |  1  |  2 
4 |  4  |  2 

Jetzt möchte ich die Location pro countryid zurückgesetzt werden, damit es dieser Datensatz werden würde:

Id | LocationNumber | CountryId 
------------------------------- 
1 |  1  |  1 
2 |  2  |  1 
3 |  1  |  2 
4 |  2  |  2 

Es sollte sein getan mit einer Abfrage und nicht mit inkrementellen Eigenschaften.

Danke, Brent

+0

auf "Lücken" von Autoinkrement/Identität/Sequenz-generierten Spalten erstellt einfach bezieht? Wenn dies der Fall ist, ist dies erwartetes Verhalten, nichts worüber man sich Sorgen machen sollte, und sollte wirklich in Ruhe gelassen werden. Lückenlose Sequenzen sind eine "schlechte Sache", weil Sie alles hinter der Sequenz serialisieren müssen! (Keine gleichzeitige Udpates = ein bisschen wie eine Single-User-Datenbank.) –

Antwort

1

Sie diese Abfrage ausprobieren können:

Select Id, ROW_NUMBER() OVER(PARTITION BY CountryId ORDER BY LocationNumber) 
AS LocationNumber, CountryId FROM Locations 
Verwandte Themen