MySql LEFT JOIN只返回另一个表中的一个NULL行

时间:2015-07-21 06:25:03

标签: mysql

我在MySql中有两个表。 表1:

id account_no 
1  123 
2  124 
3  125 
4  126 
5  127

表2:

id amount
1  200
1  300
2  400
3  300
2  100

我想要的输出是:

account_no total_amount
123  500
124  500
125  300
126  0
127  0

我的查询如下

SELECT a.account_no AS 'account_no', IFNULL(SUM(b.amount),0) AS 'total_amount'
FROM table1 a
LEFT JOIN table2 b
ON a.id = b.id
GROUP BY b.id ORDER BY a.account_no

但是通过这个查询,我只得到了这个

account_no total_amount
123  500
124  500
125  300
126  0

任何人都可以帮我吗?

3 个答案:

答案 0 :(得分:0)

这就是你GROUP BY b.id的原因。在您的情况下,a.id 126和127的b.id id为null并且将被分组。

您最后两行的加入结果将是:

a.id account_no b.id total amount
4  126 null null 
5  127 null null

并将这些行分组为一行。

答案 1 :(得分:0)

试试这个。

SELECT a.account_no AS 'account_no', IFNULL(SUM(b.amount),0) AS 'total_amount'
FROM table1 a
LEFT JOIN table2 b
ON a.id = b.id
GROUP BY a.account_no ORDER BY a.account_no

而不是b.bid,它只有3个唯一值才能使用a.account_no组,这将拥有所有唯一帐户。

让我知道任何查询。 :)

答案 2 :(得分:0)

你的查询是完美的,除了group by子句,

SELECT a.account_no AS 'account_no', IFNULL(SUM(b.amount),0) AS 'total_amount'
FROM table1 a
LEFT JOIN table2 b
ON a.id = b.id
GROUP BY a.account_no ORDER BY a.account_no

左连接返回左表中的所有数据,如果右表没有数据则返回null,当使用group时,需要从左表中给出键列,因为group by获取唯一行

请看看,如果有任何问题,请告诉我。

由于 阿米特