首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在select中减去mysql

在select中减去mysql
EN

Stack Overflow用户
提问于 2012-04-13 02:05:20
回答 2查看 1.3K关注 0票数 3

例如,我有下表:

代码语言:javascript
复制
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减去bnum,也就是说,结果是:

代码语言:javascript
复制
01-01 | 10    //10
01-02 | 12    //14-2
01-03 | 14    //19-5
01-04 | 13    //13

我尝试了下面的SQL查询,但是如果date上没有b的记录,它将返回\N

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-13 02:07:58

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

代码语言:javascript
复制
numall - NULL

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

代码语言:javascript
复制
numall - COALESCE(numout, 0)

强制将不存在的'b‘日期设置为0。

票数 7
EN

Stack Overflow用户

发布于 2012-04-13 02:08:56

使用SELECT tba.date, numall-ISNULL(numout,0)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10129215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档