MySQL double left join使结果加倍,从而更改列和结果
我想在一个结果中左连接三个表,当我这样做时:我的结果是错误的,正如你们所看到的 我希望MySQL double left join使结果加倍,从而更改列和结果,mysql,sql,join,left-join,Mysql,Sql,Join,Left Join,我想在一个结果中左连接三个表,当我这样做时:我的结果是错误的,正如你们所看到的 我希望COUNT(Test2.id)是2和SUM(Test3.positive)是3而不是两者都是6 那是我的问题。我希望这是可以理解的。对于每个test1.id,您都会得到一个笛卡尔积。您需要在加入之前进行聚合s: SELECT t1.id,Test1.name, t2.cnt_2, t3.sum_pos, t3.sum_neg FROM Test1 t1 LEFT JOIN (SELECT
COUNT(Test2.id)
是2
和SUM(Test3.positive)
是3
而不是两者都是6
那是我的问题。我希望这是可以理解的。对于每个
test1.id
,您都会得到一个笛卡尔积。您需要在加入之前进行聚合
s:
SELECT t1.id,Test1.name, t2.cnt_2,
t3.sum_pos, t3.sum_neg
FROM Test1 t1 LEFT JOIN
(SELECT ID_Test1, COUNT(*) as cnt_2
FROM Test2
GROUP BY ID_Test1
) t2
ON t1.id = t2.ID_Test1 LEFT JOIN
(SELECT ID_Test1, SUM(positive) as sum_pos, SUM(negative) as sum_neg
FROM Test3
GROUP BY ID_Test1
) t3
ON t1.id = t3.ID_Test1
GROUP BY t1.id;
是SQL提琴。先生,如何创建SQL提琴?@MohitKumar。提示:www.sqlfiddle.com。如果您在这方面有问题,总会有rextester和db fiddle,当然还有其他的。