2017-06-14 31 views
0

我正在使用SQL Server管理工作室2014.重置後自動編號爲每個不同的列值

我有2個表:國家和地點。

國家有一個屬性Id和其他列。

位置有一個屬性Id,LocationNumber,CountryId。

在舊應用程序中,當您刪除locationNumber時,它將保存數據錯誤。

所以我想重置所有的位置編號並重新插入。

假設我有這樣的數據集:

地點:

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

現在我想重置每countryId的locationNumber所以它會成爲這個數據集:

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

它應該是用查詢完成而不用增量屬性。

謝謝,布倫特

+0

你只是指/自動增量由/身份產生「間隙」產生的序列列?如果是這樣,這是預期的行爲,沒有什麼可擔心的,真的應該一個人留下。無間隙序列是一件「壞事」,因爲你必須序列化序列後面的所有東西! (沒有併發udpates =有點像單用戶數據庫。) –

回答

1

你可以試試這個查詢:

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