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]感谢您的快速响应。这是最好的答案。谢谢你的快速回复。这是最好的答案。