0

複数の列を含むテーブルがあります。SQL Server 2008 を使用しています。別のテーブルから取得した値に基づいて、生ごとにテーブルのインクリメント内の 1 つの行の値を変更する必要があります。

たとえば、テーブル項目が次の場合:

row1    row2     row3   
kk       aa       1
bb       ss       2

たとえば、別のテーブルから値を読み取る必要があります: MAX(Table_2.row9)=5 そして、テーブルを次のように変更します。

row1    row2     row3   
kk       aa       6
bb       ss       7

私はIDENTITY列を認識しており、列をIDENTITYとして使用し、次のようなコードを作成することを考えていました。

ALTER TABLE <TABLE> IDENTITY = (select MAX(F27)+1 FROM <TABLE2>)
4

2 に答える 2

2

UPDATEステートメントをお探しですか:

update table1 
set row3 = row3 + (select max(f27) from table2);
于 2013-06-27T00:25:44.067 に答える
1

IDENTITY 値を再シードしても、既存の行には影響しませんが、新しく挿入された行のみがカウントされます。また、列が ID の場合は更新できません。

単に値を更新するだけでよい場合は、単純に保つことができます。

DECLARE @m INT
SELECT @m = MAX(F27)+1 FROM Table2

UPDATE Table1
SET Row3 = Row3 + @m

編集 - 追加情報の後: 更新後にその列を ID にする必要がある場合は、いくつかの回避策を実行する必要があります。

  1. ID プロパティを持つことを除いて同じ新しいテーブルを作成します。

  2. 新しいテーブルの ID 挿入をオンに設定します

  3. 既存のテーブルから新しいテーブルにデータをコピーし、必要な ID を調整します (古いテーブルで既に更新されています)

  4. 新しいテーブルの ID 挿入をオフに設定する

  5. DROP 既存のテーブル (または、安全のために、今のところ TableName_OLD に名前を変更します)

  6. 新しいテーブルの名前を古い名前に変更

また

Management Studio のテーブル デザイナーを使用して、列の IDENTITY プロパティを [はい] に変更するだけです。バックグラウンドで上記のすべての手順を実行します。

于 2013-06-27T00:26:25.633 に答える