gpt4 book ai didi

mysql - 在查询中使用双左连接返回不同的值

转载 作者:行者123 更新时间:2023-11-29 00:28:31 25 4
gpt4 key购买 nike

下面是表格

表 1

CREATE TABLE table1 (
id smallint(5) NOT NULL AUTO_INCREMENT primary key,
name varchar(30) NOT NULL
)
ENGINE=InnoDB;

表 2

create table table2(
no int auto_increment primary key,
Reg_no varchar(2),
debit decimal(19,2)
)
engine=innodb;

表 3

 create table table3(
no int auto_increment primary key,
Reg_no varchar(2),
Paid decimal(19,2)
)
engine=innodb;

下面是我的查询代码。

SELECT id, sum(Paid) AS AMOUNT,sum(debit) AS DEBIT 
from table1 LEFT JOIN table2 ON table1.id=table2.Reg_no
LEFT JOIN table3 ON table1.id=table3.Reg_no
GROUP BY table1.id

我发现在查询中使用双左连接非常困难,此代码中的问题是,上面查询中使用的总和给出的数字超过预期数字,例如 sum(10 +10) 将输出 40 而不是 20。请问我的代码哪里出错了。如果有人能帮助我,我将不胜感激。提前致谢

最佳答案

问题是每个连接都是一对多的,因此您要乘以每个 ID 的行数。

解决方案是预先聚合结果。但是,您没有在问题中提供足够的信息来给出正确答案。查询可能类似于:

SELECT id, Paid, Debit
from table1 LEFT JOIN
(select Reg_no, sum(Debit) as Debit
from table2
group by Reg_no
) table2
ON table1.id = table2.Reg_no left outer join
(select Reg_no, sum(Paid) as Paid
from table3
group by Reg_no
) table3
ON table1.id = table3.Reg_no
order BY table1.id

关于mysql - 在查询中使用双左连接返回不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17757372/

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