在表之间共享值的SQL Sum行

时间:2016-06-14 05:17:32

标签: mysql sql sum left-join

我有两张桌子:

Country
|-----------------|
|Code | Population|
|-----------------|
|  1  |    10     |
|-----------------|
|  2  |    20     |
|-----------------|
|  3  |    30     |
|-----------------|

Borders
|---------------------|
| country1 | country2 |
|---------------------|
|    1     |    3     |
|---------------------|
|    1     |    2     |
|---------------------|
|    2     |    1     |
|---------------------|

表格说明:代码为1的国家/地区的人口为10,代码为2的国家/地区的人口为20,代码为3的国家/地区的人口为30。

代码为1的国家/地区为国家/地区3,代码为1的国家/地区也为国家/地区2.代码为2的国家/地区为国家/地区。

如何找到每个国家/地区的TOTAL人口?例如,国家1的边境国家的总人口将是30 + 20或50,因为它与国家3和国家2接壤。

我尝试过使用联接和总结,但我仍然不知道如何为每个国家/地区找到这个值。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:1)

试试这个:

SELECT c1.Code, SUM(c2.Population)
FROM Country AS c1
INNER JOIN Borders AS b ON c1.Code = b.country1 
INNER JOIN Country AS c2 OB b.country2 = c2.Code
GROUP BY c1.Code

答案 1 :(得分:0)

加入两个表

SELECT b.country1, SUM(c.population) AS Population
FROM country c
LEFT JOIN borders b ON c.code = b.country2
GROUP BY b.country1

输出将是

-------------------------------------------
| Code       | Population                 |
-------------------------------------------
| 1          | 50                         |
-------------------------------------------
| 2          | 10                         |
-------------------------------------------