web-dev-qa-db-ja.com

値が別のテーブルに存在するかどうかに基づいて更新

2つのテーブルがあります

テーブルA

Number
111       
222       
333       
444       

表B

Number    Another
111       AAA
222       BBB
666       CCC
777       DDD

私がしたいのは、テーブルBの「数値」の値がテーブルAに存在するかどうかを条件に、UPDATEステートメントを適用することです。そのため、テーブルは次のようになります。

Number    Another
111       ZZZ
222       ZZZ
666       CCC
777       DDD

UPDATEクエリとおそらく何らかのJOINを使用する必要があることはわかっていますが、構文はわかりません。

どんな助けも大歓迎です。

6
user3580480

はい。次のような結合を使用して更新する必要があります。

update t2
set t2.Another = 'ZZZ'
from table1 t1
join table2 t2 on t1.Number = t2.Number
5
Gurwinder Singh

existsも使用できます。

クエリ

update t1
set t1.[Another] = 'ZZZ'
from [TableB] t1
where exists(
    select 1 from [TableA] t2
    where t1.[Number] = t2.[Number]
);
3
Ullas

SELECT FROM table1を直接使用して、table2に更新できます。

UPDATE table2 SET Another = 'ZZZ' 
FROM table1 t1 WHERE t1.Number = table2.Number
2
Mansoor