18

私はこれらのテーブルと値を持っています:

Table1
------------------------
ID | Value
------------------------
2 | asdf
4 | fdsa
5 | aaaa


Table2
------------------------
ID | Value
------------------------
2 | bbbb
4 | bbbb
5 | bbbb

Table1 の値とそれぞれの ID を使用して、Table2 のすべての値を更新したいと考えています。

単純な SQL クエリでそれを行う方法はありますか?

4

5 に答える 5

38

選択を実行して、それが目的のものであることを確認します

SELECT t1.value AS NEWVALUEFROMTABLE1,t2.value AS OLDVALUETABLE2,*
FROM Table2 t2
INNER JOIN Table1 t1 on t1.ID = t2.ID

アップデート

UPDATE Table2
SET Value = t1.Value
FROM Table2 t2
INNER JOIN Table1 t1 on t1.ID = t2.ID

また、BEGIN TRAN必要に応じてロールバックできるように使用を検討してください。ただし、COMMIT満足のいくときに使用してください。

于 2012-06-28T15:39:14.520 に答える
10

両方のテーブルにIDがある場合、次のように機能します。

update table2
    set value = (select value from table1 where table1.id = table2.id)

おそらく、より良いアプローチは参加です:

update table2
    set value = table1.value
    from table1
    where table1.id = table2.id

この構文はSQLServerで機能しますが、他のデータベースでは異なる場合があることに注意してください。

于 2012-06-28T15:39:57.553 に答える
3

エイリアスを使用してクエリを改善できます。

UPDATE t1
   SET t1.Value = t2.Value
  FROM table1 AS t1
         INNER JOIN 
       table2 AS t2
         ON t1.ID = t2.ID
于 2013-07-18T14:52:03.347 に答える