使用案例结果进行SQL更新



我需要用另一个具有匹配键的文件2中的字段内容更新文件1中的值,但前提是在文件2中找到匹配的行。否则,请使用"Q"文字更新file1字段。这是有效的,但似乎是多余的,而且耗时太长?建议?

update ZXU                                                 
set XUATTN =  case when (select count(*) from ZXK       
where XKUSER = 'TOMTEST') > 0 
then (select XKAUTH from ZXK         
where XKUSER = 'TOMTEST')     
else 'Q'                             
end                                       
where XUUSER='TOMTEST'                                     

您可以使用COALESCE():

update ZXU
set XUATTN = COALESCE( (select k.XKAUTH from ZXK k where k.XKUSER = ZHU.XUUSER), 'Q')
where XUUSER = 'TOMTEST';

我将注意到,如果子查询返回多行,这(和您的代码(将生成一个错误。

最新更新