Используя один маленький трюк:
with accounts (id, balance) as (values(123, 500.00))
select * from (select) as dummy left join accounts on (id = 123);
Позволяет вернуть хотя бы одну строку, даже если в правой таблице нет данных.Обратите внимание, что условие фильтрации должно быть в части join on
вместо предложения where
.
Затем можно преобразовать результат в JSON
:
with accounts (id, balance) as (values(123, 500.00))
select json_build_object('success', id is not null, 'balance', balance)
from (select) as dummy left join accounts on (id = 123);
. Вы можетеиспользовать выписку case
, если вы не хотите иметь «баланс» ключ, если запрошенная учетная запись не существует:
with accounts (id, balance) as (values(123, 500.00))
select
case
when id is null then json_build_object('success', false)
else json_build_object('success', true, 'balance', balance)
end
from (select) as dummy left join accounts on (id = 456);