在SQL查询中包含COUNT个关联的最简单方法是什么?

时间:2013-05-17 00:04:21

标签: sql postgresql join count group-by

假设我有一个 [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次销售的产品。

那么,我怎样才能得到这个非常简单的数据集?

1 个答案:

答案 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子句中指定所有非聚合列。