为什么MySQL不会添加这些列?

时间:2016-06-17 13:36:23

标签: mysql

我有一个相当复杂的查询,我已经简化了这里,试图让它变得可以理解。

在下面的示例中,我尝试获取两种不同产品的SUM销售额。当我按照前两列单独检索SUM时,它们会正确计算。

但是,在将两个SUM查询一起添加(在第三列中)时,如果产品Y已售出,但 NOT 产品X,则该值将返回为完全空白

为什么会出现这种情况?

SELECT

  (
    SELECT SUM(IFNULL(product_x_sales.price, 0))
    FROM sales AS product_x_sales
    GROUP BY product_x_sales.customer_id
  ) AS "Total Sales of Product X",

  SUM(IFNULL(product_y_sales.price, 0)) AS "Total Sales of Product Y",

  (
    SELECT SUM(IFNULL(product_x_sales.price, 0))
    FROM sales AS product_x_sales
    GROUP BY product_x_sales.customer_id
  ) + (
    SUM(IFNULL(product_y_sales.price, 0))
  ) AS "Total Sales of Products X and Y"

FROM customers

JOIN sales AS product_y_sales ON customers.id = product_y_sales.customer_id

GROUP BY agents.id

1 个答案:

答案 0 :(得分:1)

当X没有销售时,您的选择结果将为NULL。 将NULL添加到Y的销售将导致NULL。

SELECT SUM(IFNULL(product_x_sales.price, 0))   <-- = NULL

将其改为此

SELECT IFNULL(SUM(IFNULL(product_x_sales.price, 0)), 0)