You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何跨表统计分类下物品总数?关联表数据查询求助

解决分类物品总数统计的SQL方案

嘿,这个需求用SQL的关联查询+分组统计就能轻松搞定!我给你两种常用的方案,根据你的实际需求选就行:

方案一:只统计有物品的分类(内连接)

如果只需要显示那些在table2里有对应物品的分类,用INNER JOIN关联两张表,再配合GROUP BYCOUNT统计:

SELECT 
    table1.category, 
    COUNT(table2.id) AS item_total
FROM 
    table1
INNER JOIN 
    table2 ON table1.ID = table2.invid
GROUP BY 
    table1.category;

逻辑拆解:

  • INNER JOIN会只保留两张表中关联匹配的记录(也就是table1里有对应物品的分类)
  • GROUP BY table1.category把结果按分类分组
  • COUNT(table2.id)统计每个分组下的物品数量(用table2的主键字段统计更准确,避免NULL干扰)

按你给出的数据,运行这段代码会得到:

categoryitem_total
Cats2
Dogs1
chicken4

方案二:显示所有分类(包括无物品的,左连接)

如果table1里存在一些还没有对应物品的分类,你想把这些分类也显示出来(物品数显示0),就用LEFT JOIN

SELECT 
    table1.category, 
    COUNT(table2.invid) AS item_total
FROM 
    table1
LEFT JOIN 
    table2 ON table1.ID = table2.invid
GROUP BY 
    table1.category;

关键说明:

  • LEFT JOIN会保留table1的所有记录,即使table2里没有匹配的物品,对应字段会显示NULL
  • COUNT(table2.invid)会自动忽略NULL值,所以无物品的分类会统计出0,而不是1(如果用COUNT(*)就会把NULL也算进去,得到错误的1)

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

火山引擎 最新活动