MySQL三表关联查询匹配与不匹配记录实现方案咨询
可行的查询语句
SELECT s.name AS `store.name`, ats.id AS `article_to_store.id`, a.name AS `article.name` FROM store s CROSS JOIN article a LEFT JOIN article_to_store ats ON ats.article_id = a.id AND ats.store_id = s.id ORDER BY a.id, s.id;
逻辑说明
- 先用
CROSS JOIN计算门店表和商品表的笛卡尔积,刚好得到3家门店*2件商品=6条基础记录,覆盖所有需要的商品+门店组合 - 再用
LEFT JOIN关联中间表article_to_store,关联条件同时匹配商品id和门店id,存在关联关系时返回对应中间表的id,没有匹配就返回null,完全符合要求的输出规则 - 不需要额外加GROUP BY,不会产生冗余数据
内容的提问来源于stack exchange,提问作者Cipo
相关产品推荐
相关产品推荐

