2012-04-18 13 views
1

SQL Serverの自動生成列で順次ユーザーIDを再生成するにはどうすればよいですか?SQLの自動生成列のシーケンシャルユーザーIDを再生成する方法

私はEmp_idが自動生成された列であるデータベースを持っています。 Emp_idだから

12 
14 
21 
22 
23 
56... 

すなわち非系列順になるように、私は今、私はEmp_idを再番号付けしたいと、その列がINT IDENTITYとき

1 
2 
3 
4 
5 
6..... 
+0

番号が連続していなければならない場合は、おそらく仕事に間違ったツールを使用しています。これは実際の要件ですか、またはちょうど美味さのための審美的な欲求ですか? –

+0

はい、私のクライアントの必要性。 SQL問合せで行数を簡単に取得できますか? – Mas

答えて

0

すなわちシーケンスに変わるように多くのデータを削除しましたSQL Serverでは、できませんテーブルに含まれている値を更新します。

これらの値は、「自動生成」他のいくつかの方法をされている場合、あなたはこのような何か行うことができます:

;WITH RegeneratedValues AS 
(
    SELECT 
     Emp_ID, 
     NewID = ROW_NUMBER() OVER (ORDER BY Emp_ID) 
    FROM 
     dbo.YourTable 
) 
UPDATE dbo.YourTable 
SET Emp_ID = regen.NewID 
FROM RegeneratedValues regen 
WHERE dbo.YourTable.Emp_ID = regen.Emp_ID 

をCTE(共通テーブル式)は「古い」Emp_ID値を選択して、新しい生成ROW_NUMBER()ランキング機能を使用して、Emp_ID列で連続番号を並べ替えます。 UPDATEステートメントは、これらの2つの値をとり、新しい、再生成された連続したギャップレスの番号を割り当てます。Emp_ID

関連する問題