我可以用一个更新查询来更新不同表中的两列吗?我陷入了这样的境地:
表1:
case id client id created by
1 a john
2 b Mike
3 c Raghu
4 b Mike表2:
case id client id case cost
2 b 5,000
3 j 10,000
4 b 6,000 问题是,我想要更新由Mike创建的两个表中的客户端id=d。
我可以通过mike创建的join获取这些案例,但是也可以使用sql join来更新它们吗?
发布于 2014-03-29 03:37:14
在一条语句中对更多更新的答案是否定的。虽然可以在update语句的from子句中输入多个表,但只能在update关键字后指定单个表。即使您确实编写了一个“可更新”视图(这只是一个遵循某些限制的视图),像这样的更新也会失败。
要修复此问题
使用事务块:
示例:
BEGIN TRANSACTION
update A
set A.client_id = 'd'
from table1 A inner join table2 B
on B.client_id = A.client_id
where a.created_by='mike'
update B
set B.client_id = 'd'
from table2 B inner join table1 A
on B.client_id = A.client_id
where a.created_by='mike'
COMMIT发布于 2014-03-29 03:36:37
也许像这样的东西会起作用。
UPDATE table1,table2 SET table1.client_id='d',table2.client_id='d'
WHERE table1.client_id=table2.client_id;由于您将RDBMS称为MSSQL 2012,因此只能有一条update语句。您可以使用另一个答案(OR)中提到的多个in transaction块
创建一个过程,并将两个update语句包装在那里,如下所示
create procedure update_table1_table2
as
begin
UPDATE table1 SET client_id='d' WHERE client_id='b';
UPDATE table2 SET client_id='d' WHERE client_id='b';
end然后像这样调用你的过程
exec update_table1_table2 https://stackoverflow.com/questions/22721603
复制相似问题