求助:BigQuery中三表LEFT JOIN查询SQL编写及字段去重
正确的BigQuery SQL实现方案
以下是符合你需求的正确SQL代码:
SELECT st.ItemNumber, st.StoreNo, st.StoreAddress, st.StorePhoneNumber, st.StoreType, st.StoreOwner, it.ItemWeight, dt.ItemColor FROM `Store_Table` st LEFT JOIN `Item_Table` it ON st.ItemNumber = it.ItemNumber LEFT JOIN `Description_Table` dt ON st.ItemNumber = dt.ItemNumber WHERE st.StoreType = 'city' AND st.StoreOwner NOT IN ('active', 'trial')
针对你原有代码的修正说明:
- JOIN拼写错误:你写的
LEFT OUTTER JOIN是错误的,正确写法是LEFT OUTER JOIN,BigQuery也支持简写为LEFT JOIN - 缺失WHERE关键字:筛选条件前必须加上
WHERE关键字,否则会触发语法报错 - 未关联第三张表:按照需求需要关联
Description_Table获取ItemColor,新增对应的LEFT JOIN逻辑 - 重复的ItemNumber:只需要从主表
Store_Table选取一次ItemNumber即可,无需重复选取关联表的同名字段 - 移除不存在的字段:你原代码里的
Table1.gpid在Store_Table中不存在,直接删除该无效字段 - 简化别名:用更简洁的别名(st、it、dt)提升代码可读性,避免冗长的Table1/Table2命名
内容的提问来源于stack exchange,提问作者Petey2005
相关产品推荐
相关产品推荐

