此处我尝试从Table2
获取值并更新为Table1
。我正加入Id3
。
我想要的是再添加一个条件,如果Id4
中存在Table2
,那么它应该与Table1
中的匹配,并且该行应该用于更新
如果Id4
不匹配,则仍应根据Id3
进行更新。
Update w
set w.id1 = s.Id1, w.id2 = s.id2
from Table1 w
join Table2 s on w.id3 = s. id3
where w.id1 is null
我已经重新定义了上面的查询以使用Id4
上的条件,但它无法正常工作,因为它仍然会随机重复行。
Update w
set w.id1 = s.Id1, w.id2 = s.id2
from Table1 w
join Table2 s on w.id3 = s. id3
where w. id1 is null
and (w. id4 = s.id4 or (1=1))
有人可以在上面重新构建更好的查询吗?
答案 0 :(得分:0)
不确定,因为您的输入有点不清楚,但也许您可以分两步尝试:
UPDATE Table W Set Id1 = S.Id1 FROM Table1 AS W
WHERE EXISTS ( SELECT * FROM Table2 AS S
WHERE S.Id4 = W.Id4 )
第二步:
UPDATE Table W Set Id1 = S.Id1 FROM Table1 AS W
WHERE EXISTS ( SELECT * FROM Table2 AS S
WHERE S.Id3 = W.Id3 )
AND ISNULL (Id1, '') = ''
答案 1 :(得分:0)
排队有点不清楚。试试这个:
Update w set w.id1 = s.Id1, w.id2=s.id2
from Table1 w join Table2 s
on w.id3 = s.id3 or w.id4 = s.id4