我正在从id位于数组中的表中选择行。这是可行的,但我也想为表中不存在的行返回默认值。
我目前有
SELECT
id,
column1
FROM
table_name
WHERE
id = ANY(ids_array_variable)
但是,如果数组中的一些id不在表中,那么我的结果就是少了几行。我需要它仍然返回{id,default_value}的默认记录,以便结果始终具有与ids_array_variable 相同数量的条目
使用左联接:
select a.id,
coalesce(t.column1, 'some default') as column1
from unnest(ids_array_variable) as a(id)
left join table_name t on t.id = a.id;
如果表serviceconfig没有键-'my_key'-使用默认值
感谢@a-hors-with-no-name
SELECT COALESCE(KV.value, def.val) as value
FROM (
select def.val from unnest(ARRAY ['default']) as def(val)) as def
LEFT JOIN
(SELECT *
FROM serviceconfig
WHERE key = 'my_key') KV on true;