当 Where 子句与 PostgreSQL DB 中的条目不匹配时返回空行



我正在我的PostgreSQL数据库上运行一个简单的SELECT语句,如下所示:

SELECT * FROM my_table WHERE primary_key IN (a, b, c);

如果my_table只有对应于主键的条目ac,则查询将只返回两行 - 一行用于a及其所有数据,另一行用于c及其所有数据。

我希望查询在表中没有主键条目时返回空(或NULL/nil值)。 所以我希望上述SELECT查询的输出是 [a_datanilb_data] 而不是 [a_datab_data]。有没有办法做到这一点?

更一般地说,如果我有SELECT * FROM my_table WHERE primary_key IN (x_1, x_2, ..., x_n),我希望返回n行,其中x_data对于数据库中不存在的每个xNULL/nil

使用派生表和左连接。 在Postgres中,这看起来像:

select t.primary_key, primary_key
from (values (a), (b), (c)) v(primary_key) left join
my_table t
using (primary_key);

相关内容

  • 没有找到相关文章

最新更新