You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL查询:指定名称不存在时返回NULL而非无结果行

PostgreSQL 查询指定名称并返回不存在的NULL行

问题背景

我有一个PostgreSQL数据表,数据如下:

NameAttendance
Jackie2
Jade5
Xi10
Chan15

需要实现:查询指定名称列表时,若某个名称不存在于表中,返回对应的NULL行(而非不显示该行)。例如查询('Jackie', 'Jade', 'Cha', 'Xi'),期望结果:

NameAttendance
Jackie2
Jade5
NULLNULL
Xi10

解决方案

通过构造包含目标名称的临时数据集,与原表做LEFT JOIN即可实现需求,以下提供两种常用写法:

写法1:使用ARRAY和unnest

WITH target_names AS (
    SELECT unnest(ARRAY['Jackie', 'Jade', 'Cha', 'Xi']) AS name
)
SELECT tn.name, t.attendance
FROM target_names tn
LEFT JOIN your_table t ON tn.name = t.name;

写法2:使用VALUES子句

SELECT tn.name, t.attendance
FROM (
    VALUES ('Jackie'), ('Jade'), ('Cha'), ('Xi')
) AS tn(name)
LEFT JOIN your_table t ON tn.name = t.name;

说明

  • 两种写法都会先生成包含所有指定名称的临时表,再左连接原表。原表中不存在的名称,对应的attendance字段会返回NULL。
  • 请将your_table替换为你实际的数据表名称。

内容的提问来源于stack exchange,提问作者Jackie Chan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 10:25:33