假设我有一个 [Products] 表,并且 [Products.record] 可以包含许多 [Sales.records] 它
我希望有一个数据集,它可以为我提供产品的销售数量。当然,产品可以零销售。
我的查询的第一个版本如下所示:
SELECT products.*,COUNT(*) as num_of_sales
LEFT OUTER JOIN sales ON sales.product_id = products.id
GROUP BY products.id
问题当然是这个查询无法区分有1次销售和0次销售的产品。
那么,我怎样才能得到这个非常简单的数据集?
答案 0 :(得分:5)
请勿使用COUNT(*)
,而应使用COUNT(sales.product_id)
。
SELECT products.*,
COUNT(sales.product_id) as num_of_sales
LEFT OUTER JOIN sales
ON sales.product_id = products.id
GROUP BY products.id
作为旁注,您应该在GROUP BY
子句中指定所有非聚合列。