我有两张表jhead
和jjops
。我正在使用以下语句更新jhead
:
UPDATE jhead h
SET h.jhpcmp = 1
WHERE h.jhpcmp = '0' AND h.jhpqty <= h.jhqtys
但现在我想根据jjops
中更新的内容更新jhead
。声明如下:
UPDATE jjops j
SET j.jascmp = 1, japcmp = 1
WHERE (This is where I am stuck)
这两个表的链接如下:h.jhjob = j.jajob
有没有办法一起更新两个表?我应该首先使用连接更新表jjops
,然后更新表jhead
,如果是,我应该使用什么加入?
答案 0 :(得分:1)
“同时”更新两个表的方法是使用事务。您可以使用output子句作为将一个语句传递给下一个语句的一种方法。 SQL Server还具有加入更新语句的特殊语法(请参阅第二次更新)
Declare @ids table (jhjob int not null) -- replace with correct data type
Begin Transaction
Update
jhead
Set
jhpcmp = 1
output
inserted.jhjob into @ids
Where
jhpcmp = '0' And
jhpqty <= jhqtys
Update
jjops
Set
jascmp = 1,
japcmp = 1
From
jjops j
inner join
@ids h
on j.jajob = h.jhjob
Commit Transaction