mysql在选择中减去

标签 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

我想从a中减去numb,即结果为:

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/

相关文章:

php - 如何在mysql中显示所有除法总计

sql - 如何将 SQL 字符串解析为 rails Arel 对象

sql - 尝试访问 SQL Server EXEC 语句的结果/结果集

PHP 去除非整数并将输出重新格式化为电话号码

MySQL:根据A表和B表的数据更新表A

php - 将文本文件转换为 CSV 或将每个值存储在 mysql 中?

sql - 如何为给定数据创建范围

PHP 永久变量,但可变?

mysql - Mule 的动态连接器配置,特别是 MySQL 数据库名称?

sql - 获取与其他行中列值相关的列值