单条SQL查询实现全量城市关联拜访计划,无匹配项显示空值
解决方案:获取所有有客户的城市及对应拜访计划(无计划则字段为空)
原查询使用INNER JOIN仅能返回两张表中城市匹配的交集数据,因此丢失了city B、city D这类无对应拜访计划的城市记录。要实现保留所有有客户的城市,无拜访计划时对应字段显示空值的需求,需要改用LEFT JOIN(左连接),它会保留左表(Customer)的所有记录,当右表(Visit_plan)无匹配数据时,右表字段自动填充NULL。
正确SQL查询语句
SELECT DISTINCT a.city, a.salesperson_id, b.visit_day, b.visit_frequency FROM Customer a LEFT JOIN Visit_plan b ON a.city = b.city
关键说明
LEFT JOIN:以Customer表为基准,保留所有有客户的城市记录,即使Visit_plan中无对应城市的拜访计划。DISTINCT:去除Customer表中同一城市重复的客户记录,确保每个城市的销售信息唯一展示。
预期查询结果
| city | salesperson_id | visit_day | visit_frequency |
|---|---|---|---|
| city A | IPGT1 | Monday | 2 |
| city B | IPGT2 | NULL | NULL |
| city C | IPGT2 | Tuesday | 2 |
| city D | IPGT3 | NULL | NULL |
内容的提问来源于stack exchange,提问作者s3polz
相关产品推荐
相关产品推荐

