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

多表关联查询:如何保留Email、Phone字段为空值的所有行?

解决方案建议

问题出在你使用的**内连接(JOIN)**上:内连接仅返回关联条件两边都存在匹配记录的行。如果客户在LegacyCustomerContactData表中没有对应ID_3的匹配记录,或者匹配记录里Email/Phone为空,内连接会直接过滤掉这些行。

要实现即使Email、Phone为空也能查询到所有符合关联条件的行,只需将最后一个内连接替换为左连接(LEFT JOIN):

SELECT a.ID_1
,b.Tier
,e.Email
,e.Phone
FROM CustomerActivity a 
JOIN CustomerSummary b
ON a.ID_1 = b.ID_1
JOIN DimensionCustomer c
ON b.ID_1 = c.ID_1
JOIN LegacyCustomerMapping d
ON c.ID_2 = d.ID_2
LEFT JOIN LegacyCustomerContactData e  -- 替换为LEFT JOIN
ON d.ID_3 = e.ID_3

左连接的逻辑是:保留左侧所有已关联的行(即CustomerActivity到LegacyCustomerMapping的匹配结果),如果右侧LegacyCustomerContactData有匹配的ID_3,则显示对应的Email和Phone;如果没有匹配,或者匹配记录的Email/Phone为空,这两个字段会以NULL值返回,但不会过滤掉整行数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:20:26