由于某种原因,找不到适合我的主题的任何内容: 如果结果集为空,则返回示例行并且类似的问题使用整数进行连接。
我有一个结构简单的表:pk::int、key::varchar、value::varchar
我需要按键列进行搜索并返回多个值。如果没有匹配的行(空结果集),我想返回默认值,例如单词“default”。
简单的解决方案是使用带有UNION和LIMIT 1 的CTE 或子查询,但查询应该能够返回多个值(键列可能包含重复项),因此这不是解决方案。
我想出了这个,它正在起作用:
SELECT value FROM mytable
WHERE key = 'foobar'
UNION
SELECT 'default' AS value
WHERE (SELECT COUNT(*) FROM mytable WHERE key = 'foobar') <1
但子查询使数据查询量增加了一倍。
有没有更优雅、更高效的解决方案?