表 items
跟踪可以存储的不同类型的项目。
item_type item_name last_stock 1 cake 2010-08-10 2 fruit 2010-08-07 3 soda 2010-08-07 4 water 2010-08-09
Table individual_items
keeps track of each specific item.
id item_type 1 1 2 2 3 1
My query in MySQL:
SELECT i.item_type, i.item_name, COUNT(j.id)
FROM items i
LEFT OUTER JOIN individual_items j
ON i.item_type = j.item_type
GROUP BY j.item_type
但是,COUNT(j.id)
搞砸了我的结果。它似乎是对任何已定义但实际上不存在的项目进行分组。
item_type item_name COUNT(j.id) 1 cake 2 2 fruit 1 3 soda 0
我认为预期的第四行 4 water 0
没有出现,因为 COUNT()
错误地将 LEFT OUTER 产生的不存在的行分组加入
。我该如何解决这个问题?
最佳答案
除了聚合函数中的字段外,您应该按 SELECT 语句中的所有字段分组
SELECT i.item_type, i.item_name, COUNT(j.id)
FROM items i
LEFT OUTER JOIN individual_items j
ON i.item_type = j.item_type
GROUP BY i.item_type, i.item_name
更新:我已经在本地 mysql 服务器上进行了测试,上面的代码应该可以工作
关于mysql - COUNT 正在对行进行意外分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3452597/