如何通过SQL JOIN实现所有门店与所有商品的全量关联查询?
正确SQL写法实现门店与商品全量组合查询
要实现所有门店与所有商品的全量组合(无库存时Quantity显示NULL),核心是先获取所有唯一的商品ID,再与门店表生成笛卡尔积,最后通过左连接匹配库存数据。
完整SQL语句
SELECT s.StoreID, s.StoreName, items.ItemID, i.Quantity FROM Stores s CROSS JOIN -- 提取所有唯一商品ID,避免重复组合 (SELECT DISTINCT ItemID FROM Inventory) items LEFT JOIN Inventory i ON s.StoreID = i.StoreID AND items.ItemID = i.ItemID ORDER BY s.StoreID, items.ItemID;
关键说明
- 用
(SELECT DISTINCT ItemID FROM Inventory)获取所有存在的商品ID,确保每个商品只参与一次组合,解决你之前遇到的重复结果问题。 CROSS JOIN生成所有门店与所有商品的全量配对。LEFT JOINInventory表,匹配对应门店和商品的库存数据,无匹配时Quantity自动显示NULL。
内容的提问来源于stack exchange,提问作者exe.bat
相关产品推荐
相关产品推荐

