Postgres,如果表中不存在 id 则返回默认行



我正在从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;

最新更新