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

如何修改SQL Server查询,统计所有ItemType的关联Item数量(含0值)

统计所有ItemType对应的Item数量(包含无Item的类型)

嘿,这个问题我之前也碰到过!你当前用的inner join只会保留两张表中能匹配上的行,所以那些没有对应Item的ItemType就被过滤掉了。要展示所有已定义的ItemType,哪怕该类型下没有Item,只需要做两个小调整:

修改后的查询语句

select 
    ItemType.ItemTypeName as [Item Type], 
    count(Item.Id) as [Items Count]
from ItemType 
left join Item on Item.TypeId = ItemType.Id
group by ItemType.ItemTypeName

为什么这样改?

  1. 左连接(Left Join)的作用:left join会保留左表(这里是ItemType)的所有记录,不管右表(Item)有没有匹配的数据。对于没有对应Item的类型,Item表的字段会显示为NULL。
  2. count()的正确用法:如果用count(*),它会把所有行(包括Item字段为NULL的行)都算进去,这样没有Item的类型会显示1而不是0。而count(Item.Id)只会统计Item.Id不为NULL的行数——也就是真正存在的Item数量,这样就能得到你想要的0啦。

可选优化:给结果排序

如果希望结果按类型名称排序,只需要在查询末尾加个order by:

select 
    ItemType.ItemTypeName as [Item Type], 
    count(Item.Id) as [Items Count]
from ItemType 
left join Item on Item.TypeId = ItemType.Id
group by ItemType.ItemTypeName
order by ItemType.ItemTypeName

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:25:50