让表1和表2,表1列DDcl1,DDcl2,DDcl3,......
我需要用
更新这些表update A
set DDcl1 = 'Y'
from Table1 A join Table2 B
on A.id = B.id
where B.Ref = 'cl1'
update A
set DDcl2 = 'Y'
from Table1 A join Table2 B
on A.id = B.id
where B.Ref = 'cl2'
update A
set DDcl3 = 'Y'
from Table1 A join Table2 B
on A.id = B.id
where B.Ref = 'cl3'
有没有办法用更简单的方式更新这些表及其对应的where子句?我需要更新超过10列,并且通过上面的查询,我将花费很长时间来编写它。
答案 0 :(得分:1)
update A
set [DDcl1]= case when B.Ref = 'cl1' then 'Y' else 'N' end,
[DDcl2]= case when B.Ref = 'cl2' then 'Y' else 'N' end
--............. Add more codition
from Table1 A join Table2 B
on A.id = B.id
答案 1 :(得分:0)
你可以试试这个。假设需要保留每列中的原始值。如果没有,则它可以是ELSE中的设定值,例如N' N' N' N' 另外,我添加了一个where子句来最小化更新次数,不确定这是否适用于您的特定情况。
UPDATE A
SET DDcl1 = CASE WHEN B.Ref = 'cl1' THEN 'Y' ELSE DDcl1 END,
DDcl2 = CASE WHEN B.Ref = 'cl2' THEN 'Y' ELSE DDCL2 END,
DDcl3 = CASE WHEN B.Ref = 'cl3' THEN 'Y' ELSE DDcl3 END
-- Additional cases
FROM Table1 A join Table2 B
on A.id = B.id
WHERE B.Ref in ('cl1','cl2','cl3')