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

SQL INNER JOIN关联两表如何保留左表NULL行并填充默认值

实现方案

不需要额外创建第四张表,调整连接类型加空值处理即可实现需求。

你当前使用的INNER JOIN(内连接)只会返回两表连接条件完全匹配的行,而SQL中NULL与任何值做等值判断都不会成立,因此table_A中id为NULL的行会被直接过滤,无法出现在结果中。

具体实现步骤

  • 将内连接替换为LEFT JOIN(左外连接),以table_A作为左表,保证左表所有行都会被保留,哪怕右表table_B中没有匹配的对应记录
  • 使用COALESCE函数处理右表返回的name字段:当匹配不到对应记录时,table_B.name会返回NULL,此时自动填充为你需要的no entry

可直接运行的创建视图代码

CREATE VIEW view_1 AS
SELECT DISTINCT
  table_A.id,
  COALESCE(table_B.name, 'no entry') AS name
FROM table_A
LEFT JOIN table_B
  ON table_A.id = table_B.id;

执行上述语句创建的视图,返回结果完全符合你的预期:

idname
1a
2b
NULLno entry

补充说明:如果你的数据库环境不支持COALESCE函数,也可以用CASE WHEN实现相同效果,例如将name字段的写法替换为CASE WHEN table_B.name IS NULL THEN 'no entry' ELSE table_B.name END AS name,效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:39:19