作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我想要将两列( double 类型)与两个不同的表相加。我的查询 sql 一直有效,直到我添加子句“where”。如果满足每个子句“where”则为 okej,返回正确结果。如果即使有一个子句返回 null,则结果也为 null。什么将我的代码更改为单个子句如果不存在记录则返回 0。
select(从change_graphic中选择总和(金额),其中月(change_date)= 4且年(change_date)= 2019)+(从已接受= 0且月(日期)= 4的契约(Contract)中选择SUM(规定)和年份(日期)=2019);
最佳答案
使用coalesce()
:
select (select coalesce(sum(amount), 0)
from change_graphic
where month(change_date) = 4 and year(change_date) = 2019) +
(select coalesce(sum(provision), 0)
from contracts
where accepted = 0 and month(date) = 4 and year(date) = 2019
);
子查询保证返回一行,因为它们是没有 GROUP BY
的聚合查询。因此,您可以将 SUM()
生成的 NULL
转换为 0
进行加法。
我建议您按以下方式进行日期比较:
select (select coalesce(sum(amount), 0)
from change_graphic
where change_date >= '2019-04-01' and
change_date < '2019-05-01'
) +
(select coalesce(sum(provision), 0)
from contracts
where accepted = 0 and
date >= '2019-04-01' and
date < '2019-05-01'
);
如果有适当的索引可用,这使得 MySQL 能够在日期列上使用索引。
关于mysql - 如何对两个不同表的两列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56589372/
我是一名优秀的程序员,十分优秀!