我在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
任何人都可以帮我吗?
答案 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获取唯一行
请看看,如果有任何问题,请告诉我。
由于 阿米特