Sql server sql server,如果表B中存在表A记录,则更新表A

Sql server sql server,如果表B中存在表A记录,则更新表A,sql-server,tsql,Sql Server,Tsql,我有这个桌子结构 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

我有这个桌子结构

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)

。。但是所有的行都受到了影响

Name这个ID有点多余

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

名称ID a_ID有点多余

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

您可以使用Join更新表,如下所示

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

您可以使用Join更新表,如下所示

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

将您尝试过的SQL添加到您的问题中,无论是否有效。提示,您可以在update语句中使用联接。您没有说明要查看的exists中的内容。你写这篇文章的方式就像说1=1。要正确工作,您需要这样编写:UPDATE TABLE_A set status='OK'WHERE EXISTS SELECT*FROM TABLE_B WHERE A.[A_ID]=B.[A_ID]感谢您为您的问题提供的提示和您尝试过的SQL,无论是否工作。提示,您可以在UPDATE语句中使用联接。您并不是在EXISTS中声明要查看的内容。你写这篇文章的方式就像说1=1。要正确工作,您需要这样编写:更新表A设置状态='OK'如果存在,请从表B中选择*,其中A.[A\U ID]=B.[A\U ID]感谢您的快速响应。这是最好的答案。谢谢你的快速回复。这是最好的答案。