mysql选择差异(减号)

时间:2014-03-13 23:28:45

标签: mysql sum subtraction

我有两张桌子:

表1:股票

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

表2:销售

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

如何获得产品之间的差异(一个项目的总和) - 产品的总销售额(总和)?我试图计算两个总和之间的差异,但有时我减去了#34;没有"从库存,因为可能一个项目不在销售表中,我得到类似的东西:

2 - NULL = NULL,我想要像2-0 = 2

这样的东西

3 个答案:

答案 0 :(得分:8)

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
) 

答案 1 :(得分:4)

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。

答案 2 :(得分:1)

sum(ifnull(item,0)) - sum(ifnull(product,0))