【问题标题】:mysql select difference (minus)mysql选择差异(减)
【发布时间】:2014-03-13 23:28:44
【问题描述】:

我有两张桌子:

表 1:库存

uid|item|
--------
01 |value1
02 |value2
02 |value2
etc|etc

表 2:销售额

uid|item
--------
02|value2
02|value2
02|value2

如何获得库存(一件商品的总和)与产品的总销售额(总和)之间的差异?我试图计算两个总和之间的差异,但有时我会从库存中减去“无”,因为销售表中可能不存在某件商品并且我得到如下信息:

2 - NULL = NULL 我想要 2-0 = 2 之类的东西

【问题讨论】:

    标签: mysql sum subtraction


    【解决方案1】:

    MySQL 没有实现 MINUS 操作——这很不幸,因为在某些情况下它可以比其他方法提供更好的执行计划:

    SELECT a.*
    FROM a
    LEFT JOIN b
    ON a.id=b.id
    WHERE b.id IS NULL
    

    或者...

    SELECT a.*
    FROM a
    WHERE a.id NOT IN (
     SELECT b.id
     FROM b
    ) 
    

    【讨论】:

      【解决方案2】:

      IFNULL 会在这里派上用场:

      SELECT t1.uid, SUM(t1.item) - IFNULL(SUM(t2.item), 0)
      FROM table1 t1 LEFT JOIN table2 t2 ON t1.uid = t2.uid
      GROUP BY t1.uid
      

      它用适当的值替换NULL,这里是0。

      【讨论】:

        【解决方案3】:
        sum(ifnull(item,0)) - sum(ifnull(product,0))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-04-20
          • 1970-01-01
          • 1970-01-01
          • 2022-11-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多