You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询指定日期的所有商品订单行,无订单时显示数量为0

解决指定日期全商品订单数量查询问题

要实现你要的结果,核心是要保留所有商品记录,哪怕该日期没有对应的订单数据。用LEFT JOIN(左连接)配合COALESCE函数就能轻松搞定,具体SQL如下:

SELECT 
    i.ItemID,
    COALESCE(ol.Quantity, 0) AS Quantity
FROM 
    Item i
LEFT JOIN 
    OrderLine ol 
    ON i.ItemID = ol.ItemID 
    AND ol.Date = '2020-06-04'; -- 把日期条件放在JOIN的ON子句里,而非WHERE

关键细节说明:

  • LEFT JOIN的作用:以Item表为主表,强制保留所有商品的记录,哪怕OrderLine中没有该商品在指定日期的订单,此时OrderLine的对应字段会返回NULL。
  • 日期条件放在ON子句:如果把ol.Date = '2020-06-04'放在WHERE子句里,会过滤掉所有没有匹配订单的商品行,直接变成内连接的效果,就达不到你要的全商品展示需求了。
  • COALESCE函数:专门用来把NULL值替换成0,正好满足“无订单时显示0”的要求。

如果需要同时显示商品名称,只需要在SELECT里加上i.ItemName即可:

SELECT 
    i.ItemID,
    i.ItemName,
    COALESCE(ol.Quantity, 0) AS Quantity
FROM 
    Item i
LEFT JOIN 
    OrderLine ol 
    ON i.ItemID = ol.ItemID 
    AND ol.Date = '2020-06-04';

内容的提问来源于stack exchange,提问作者user13154320

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 22:32:46