SQL左连接计数(*)问题
我有以下疑问:SQL左连接计数(*)问题,sql,mysql,count,left-join,zero,Sql,Mysql,Count,Left Join,Zero,我有以下疑问: SELECT products_categories.categoryID, name, COUNT(*) AS itemCount FROM products_categories LEFT JOIN products_to_categories ON products_to_categories.categoryID = products_categories.categoryID GROUP BY products_categories.categoryID 但仍然存在一
SELECT products_categories.categoryID, name, COUNT(*) AS itemCount
FROM products_categories
LEFT JOIN products_to_categories ON products_to_categories.categoryID = products_categories.categoryID
GROUP BY products_categories.categoryID
但仍然存在一个问题:没有产品的类别返回itemCount=1
,而不是0
。我怎样才能解决这个问题
COUNT(products_to_categories.categoryID)
询问COUNT(*)
至少会得到1,因为毕竟有1行。特定的计数需要特定的处理。您是否尝试将计数(products\u to\u categories.categoryID)作为itemCount
?我不是很确定,但我认为问题可能在于COUNT(*)
选择产品\u categories.categoryID、name、COUNT(*)作为itemCount
从产品类别
在products\u to\u categories.categoryID=products\u categories.categoryID上左键连接products\u to\u categories
按产品类别分组。类别ID
其中itemCount“0”
尝试计数(产品名称)
或其他任何方法,而不是计数(*)
而不是左键连接只需使用JOIN@YoK谢谢你的建议。你能解释一下为什么在这种情况下加入会更好吗?
SELECT products_categories.categoryID, name, COUNT(*) AS itemCount
FROM products_categories
LEFT JOIN products_to_categories ON products_to_categories.categoryID = products_categories.categoryID
GROUP BY products_categories.categoryID
WHERE itemCount <> '0'