例如,我有下表:
date | id | num
01-01 | a | 10
01-02 | a | 14
01-02 | b | 2
01-03 | a | 19
01-03 | b | 5
01-04 | a | 13
我想从a
中减去num
个b
,即结果为:
01-01 | 10 //10
01-02 | 12 //14-2
01-03 | 14 //19-5
01-04 | 13 //13
我尝试了以下 SQL 查询,但如果在 date
上没有 b
的记录,它将返回 \N
。
SELECT tba.date, numall-numout
FROM (
SELECT date, num AS numall
FROM tb
WHERE id = "a"
) tba
LEFT JOIN (
SELECT date, num AS numout
FROM tb
WHERE id = "b"
) tbb
ON tba.date = tbb.date
最佳答案
如果没有匹配的 B,左连接将返回 null,这意味着你正在做
numall - NULL
结果为 NULL。要解决这个问题,您必须这样做
numall - COALESCE(numout, 0)
为不存在的“b”日期强制设置 0。
关于mysql在选择中减去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10129215/