Я понимаю, как использовать предложение WITH
для рекурсивных запросов (!!), но у меня возникают проблемы с пониманием его общего использования/мощности.
Например, следующий запрос обновляет одну запись, идентификатор которой определяется с помощью подзапроса, возвращающего идентификатор первой записи по метке времени:
update global.prospect psp
set status=status||'*'
where psp.psp_id=(
select p2.psp_id
from global.prospect p2
where p2.status='new' or p2.status='reset'
order by p2.request_ts
limit 1 )
returning psp.*;
Будет ли это хорошим кандидатом для использования обертки WITH
вместо относительно уродливого подзапроса? Если да, то почему?