0

私は、すべての従業員番号、名前、および各従業員に関する情報を含む SQL Server 2000 テーブルを持っています。

会社が売却された後、すべての従業員 ID 番号が削除されることを除いて、すべてのデータはそのまま残り、全員の元の雇用日 (doh) に基づいて 1 から再作成されます (そして 1 ずつ増加します)。

次のコマンドを使用して、希望する順序でレコードを一覧表示できます。

SELECT IdNumber    
FROM EmpTable    
ORDER BY doh ASC

(これIdNumberは ID の主キーであるため、一時的にオフにする必要があります。後でオンに戻す必要があります。) そのキー列には他に何も関連付けられていません。これは、すべてが入った単一のテーブルです....各従業員に関係します。2 人の従業員が同じ DOH を持っている場合、どちらが低い ID 番号を取得しても問題ありません。しかし、次のようなセカンダリ フィールドでいつでもサブソートできると思います: 姓

IdNumberしかし、列だけを変更して、同じレコードを同じテーブルに書き戻すにはどうすればよいでしょうか?

「2番目の選択肢」として...新しいID番号を使用して別のテーブルを作成できます...そして、すべてがそこにあり、機能した後...新しいテーブルをオンラインにします。

「3 番目の選択肢」として... 1 つのテーブルを使用して、新しいフィールド NewId を追加し、そこに新しく作成された ID を配置することができます。

方法はいろいろあると思いますが・・・どれも思いつきません。

4

3 に答える 3

0

このSQLコマンドDBCC CHECKIDENT(yourtable、reseed、1)を試してください

于 2013-07-09T17:44:07.237 に答える
0

IdNumber 列の主キーと ID をオフにすると、

UPDATE EmpTable
SET EmpTable.IdNumber = orderTable.rowNo
FROM( SELECT ROW_NUMBER() OVER (ORDER BY doh ASC) as rowNo, IdNumber
FROM EmpTable) as orderTable
WHERE orderTable.IdNumber = EmpTable.IdNumber
于 2013-07-09T17:45:18.070 に答える