BigQuery关联表空值问题:匹配指定编码序列的查询需求
解决方案
针对你的场景,核心是调整连接条件:对于需要匹配的指定编码对应的字段(CilindrataCc对应CC(1.3)、Carburante对应CMB(GA)、LivelloEcologia对应ECO(BPL7)、LivelloAllestimento对应L(L1)),保持严格等值匹配;对于其他可能为NULL的字段,当Table D的字段为NULL时,忽略该字段的匹配条件,避免因NULL导致连接失败,同时不会引入无关记录。
修改后的查询SQL如下:
SELECT e.Modelo, e.Volume FROM e INNER JOIN d ON ( -- 必须匹配的指定编码字段 d.Carburante = e.Carburante AND d.LivelloEcologia = e.LivelloEcologia AND d.CilindrataCc = e.CilindrataCc AND d.LivelloAllestimento = e.LivelloAllestimento -- 其他字段:d侧为NULL时跳过匹配,否则等值匹配 AND (d.FamigliaCambio IS NULL OR d.FamigliaCambio = e.FamigliaCambio) AND (d.Numero Porte IS NULL OR d.Numero Porte = e.Numero Porte) AND (d.Tipo Trazione IS NULL OR d.Tipo Trazione = e.Tipo Trazione) ) WHERE d.modelo = 658
说明
- 对于你指定需要保留的编码对应的字段,强制要求
d和e的字段值完全相等,确保只获取目标编码序列的记录; - 对于其他可能为NULL的字段,使用
(d.field IS NULL OR d.field = e.field)的逻辑:如果d的字段是NULL,该条件自动成立,不会阻碍连接;如果d的字段有值,则必须和e的字段值相等,避免引入无关记录。
内容的提问来源于stack exchange,提问作者Paulo Medeiros
相关产品推荐
相关产品推荐

