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

SQL JOIN结果出现null时取左表对应值的实现方法

解法说明

你原始写法使用了RIGHT JOIN,会保留右表table2的所有行,而你需要保留左表table1的全部行,应当使用LEFT JOIN。
处理NULL值可以用标准SQL的COALESCE函数,它会返回传入参数中第一个非NULL的值,刚好满足你“右表无匹配时取左表对应value”的需求。

通用SQL写法(支持所有主流数据库)

SELECT 
  t1.Num,
  t1.Value AS Value1,
  COALESCE(t2.Value, t1.Value) AS Value2
FROM table1 t1
LEFT JOIN table2 t2 ON t1.Num = t2.Num

不同数据库的兼容写法(效果和上面一致)

  • MySQL/MariaDB 可用IFNULL替代:
    SELECT t1.Num, t1.Value AS Value1, IFNULL(t2.Value, t1.Value) AS Value2 FROM table1 t1 LEFT JOIN table2 t2 ON t1.Num = t2.Num
    
  • Oracle 可用NVL替代:
    SELECT t1.Num, t1.Value AS Value1, NVL(t2.Value, t1.Value) AS Value2 FROM table1 t1 LEFT JOIN table2 t2 ON t1.Num = t2.Num
    

内容的提问来源于stack exchange,提问作者Антон Гридюшко

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 14:45:02