我有两张桌子:
表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
这样的东西答案 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))