gpt4 book ai didi

mysql - 如何对两个不同表的两列求和

转载 作者:行者123 更新时间:2023-11-29 09:41:12 25 4
gpt4 key购买 nike

您好,我想要将两列( 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com