5

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

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

4

1 回答 1

9

不要使用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作为旁注,您应该在子句中指定所有非聚合列。

于 2013-05-17T00:05:43.280 回答