考虑两个表,如下所示:
table_a table_b
---------------- ---------------
|Name | link_id | | id | amount |
----------------- ---------------
| M | 2 | | 2 | 100 |
| N | 3 | | 3 | 20 |
| M | 2 | | 2 | 10 |
---------------- | 3 | 200 |
----------------
现在我想获得用户名和他拥有的金额总和。预期的输出应该是:
-----------------------
|Name | his_sum_amount |
------------------------
| M | 110 |
| N | 220 |
-----------------------
为此我写了一个查询,如下所示:
select name,sum(amount) from table_a inner join table_b on table_a.link_id=table_b.id;
但是上面的查询是给出全部金额,我怎样才能获得个别金额。
答案 0 :(得分:3)
在大多数数据库中,由于name
中的select
,您的查询会产生错误。
您只是遗漏了group by
:
select name, sum(amount)
from table_a inner join
table_b
on table_a.link_id = table_b.id
group by name;
答案 1 :(得分:0)
按名称GROUP BY
使用SUM
。
SELECT a.name, SUM(b.amount) AS his_sum_amount
FROM table_a a
INNER JOIN table_b b ON a.link_id = b.id
GROUP BY a.name
输出
name his_sum_amount
M 220
N 220