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

出现NULL值应使用什么SQL语句?两表关联如何保留左表全部数据?

问题原因

INNER JOIN的匹配规则是仅保留两张表关联字段完全匹配的行,Session表中InvoiceId为空的行无法和Invoice表的Id字段匹配,所以会被直接过滤,这就是你丢失部分会话记录的原因。

解决方案

使用LEFT JOIN(左连接)替代INNER JOIN即可,左连接会强制保留左表(此处为Session表)的所有行,右表无匹配时对应字段会返回空值,刚好符合你保留全部Session数据的需求。

参考SQL语句

SELECT 
  s.id,
  s.Description,
  s.Date,
  COALESCE(i.Number, '') AS InvoiceNumber, -- 匹配不到时返回空字符串,也可根据需求直接写i.Number返回NULL
  s.Amount,
  s.ClientId
FROM Session s
LEFT JOIN Invoice i ON s.InvoiceId = i.Id

执行后预期结果

idDescriptionDateInvoiceNumberAmountClientId
9Coaching10-09-202120210180,003
10Coaching17-09-202180,003
11Therapy12-09-202120210280,004
12Therapy19-09-202120210280,004

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:48:03