Мне нужно обновить значение в файле1 с содержимым поля в другом файле2 с совпадающим ключом, но только если в файле2 найдена соответствующая строка. В противном случае обновите поле file1 с помощью литерала Q. Это работает, но кажется лишним и занимает слишком много времени? Предложения?
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():
COALESCE()
update ZXU set XUATTN = COALESCE( (select k.XKAUTH from ZXK k where k.XKUSER = ZHU.XUUSER), 'Q') where XUUSER = 'TOMTEST';
Замечу, что этот (и ваш код) вызовет ошибку, если подзапрос вернет более одной строки.