2017-10-25 16 views
0

このテーブル構造を持っています。 。SQL Server、更新テーブルテーブルAレコードがテーブルBに存在する場合

Table A 
a_ID | status 
------------- 
1  BAD 
2  OK 
3  OK 
4  BAD 
5  BAD 

TABLE B 
b_ID | a_ID 
------------- 
1  1 
2  4 

更新クエリの後。 。

Table A 
a_ID | status 
------------- 
1  OK 
2  OK 
3  OK 
4  OK 
5  BAD 

私はあなたがアイデアを得ることを願っています。 助けてください。

編集:私は

UPDATE TABLE_A set status = 'OK' WHERE EXISTS (SELECT * FROM TABLE_B) 

を試してみました..しかし、すべての行が影響を受けました。 。

+0

質問にあなたが試したSQLを追加してください。 –

+1

ヒント、更新ステートメントで結合を使用できます。 –

+1

あなたは、あなたが見たいと思っているものが何であるかを述べていません。あなたがこれを書いた方法は、WHERE 1 = 1と言っているようなものです。正常に動作させるには、次のように記述する必要があります:UPDATE TABLE_Aセットステータス= 'OK' WHERE EXISTS(SELECT * FROM TABLE_B B [A. [a_ID] = B. [a_ID]) – user3727926

答えて

1

名前ID A_IDは、一種の冗長

update a 
set a.status = 'OK' 
from a 
join b 
    on a.id = b.id 
and a.status <> 'OK' 
+0

ありがとうあなたの迅速な対応のために。これは最高の答えです。 –

1

あなたは以下のようにあなたのテーブルを更新するために参加し使用することができます。

UPDATE [LenqReloaded].[dbo].A SET [ResponseLetterSent] = 1 
FROM [LenqReloaded].[dbo]. A 
join [LenqReloaded].[dbo]. B on A.[a_ID] = B.[a_ID] 
WHERE A.[ResponseLetterSent] IS NULL 
関連する問題