mysql在select中减去

DrX*_*eng 3 mysql sql

例如,我有下表:

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
Run Code Online (Sandbox Code Playgroud)

我想.减去numb距离a,也就是说,其结果将是:

01-01 | 10    //10
01-02 | 12    //14-2
01-03 | 14    //19-5
01-04 | 13    //13
Run Code Online (Sandbox Code Playgroud)

我尝试以下SQL查询,但如果没有的记录bdate,它将返回\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
Run Code Online (Sandbox Code Playgroud)

Mar*_*c B 7

如果没有匹配的B,左连接将返回null,这意味着你正在做

numall - NULL
Run Code Online (Sandbox Code Playgroud)

这导致NULL.要解决这个问题,你必须这样做

numall - COALESCE(numout, 0)
Run Code Online (Sandbox Code Playgroud)

强制0为不存在的'b'日期.