我需要用另一个具有匹配键的文件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';
我将注意到,如果子查询返回多行,这(和您的代码(将生成一个错误。