0

SQL Server 2008 をいじってみるPeopleと、列を持つテーブルがあります。

Name  | City |  Born | ...

Changeおよび列を持つ別のテーブル:

OldName  |  NewName

Nameここで、テーブルを次のように変更したいと思いPeopleます:OldNameテーブルに inChangeと同じものがある場合は、 inをNameinPeopleに変更します。NamePeopleNewNameChange

簡単な方法はありますか?

ああ、これに対する別の質問: NameinPeopleが主キーになる場合 (またはNameandCityが複合キーになる場合)、名前を変更するのははるかに難しくなりますか? どうも

4

2 に答える 2

1

回答1)

UPDATE people,change
SET people.name = change.newname
WHERE people.name = change.oldName

内部結合構文を使用した編集:

UPDATE people
SET people.name = change.newName
FROM people
INNER JOIN change ON people.name = change.oldName

それをテストするSQL Serverはありませんが、オンラインの例に基づいて、動作するはずです。

/編集

回答 2) キーの一意性を維持している限り、変更することはまったく難しくありません。衝突を引き起こすとすぐに、エラーが発生します。このため、PK となる人物に自動インクリメント ID フィールドを設定することをお勧めします。

于 2012-08-07T23:21:46.547 に答える
1

PeopleIdテーブルに列を追加し、テーブル内の列を、テーブルへの外部キー関係を持つ列にPeople置き換える方がよい場合があります。OldNameChangePeopleIdPeople

人々:

PeopleId | Name   | City     | Born
-------------------------------------------
1        | Fred   | New York | 1/1/1980
2        | Wilma  | Boston   | 1/1/1980

変化する:

PeopleId | NewName
----------------------
1        | Barney
于 2012-08-07T23:24:44.493 に答える