2013-02-23 12 views
12

は、私は3つの列を含むテーブルT1を持っている:2列Id, New_Addressが含まれている別のテーブルT2Id, Name, AddressSQLの更新クエリ

があります。 Id欄のT2T1と同じです。

AddressT1の列をNew_AddressT2に更新するクエリが必要です。

IDを確認して更新ステートメントを実行することで、ループで実行できます。どのようにしてクエリを実行する必要がありますか?

答えて

12

どの程度

UPDATE T1 
SET Address = T2.New_Address 
FROM T2 
WHERE T1.id = T2.id 
7
UPDATE T1 
SET T1.Address = T2.New_Address 
FROM T1 
INNER JOIN T2 ON T2.ID = T1.ID 
2
UPDATE T1 
SET Address = (select New_Address from T2 where T1.ID=T2.ID); 
+2

この - 'LEFT JOIN'に相当し、 - も持っていない表1のすべての行(NULL''にそれらの設定)が更新されます表2の「NewAdress」。 –

+1

@ypercube - このクエリには、未定義のものを静かに選択するのではなく、複数の新しいアドレスが一致する場合にエラーが発生するという利点があります。これは 'SET Address = ISNULL((New.AddressをT2から選択します.T1.ID = T2.ID)、Address);と書かれていますが、' MERGE'はこのエラーチェックも組み込み済みであり、望ましいでしょう。 –