mysql - SQL 对表之间共享值的行求和

标签 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 的国家与国家 1 接壤。

如何找到每个国家邻国的总人口?例如,国家 1 的邻国总人口为 30 + 20,即 50,因为它与国家 3 和国家 2 接壤。

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

最佳答案

试试这个:

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

关于mysql - SQL 对表之间共享值的行求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37803483/

相关文章:

c - 我在 for 循环内使用 if -else 求和数组中的奇数时遇到问题

mysql - 在没有分组依据但有子查询的情况下获取总和

Laravel 查询 - 获取最畅销的商品

mysql - 根据条件检索值

mysql - 选择当前时间距时间戳至少 60+ 分钟的 mysql 语句

sql - Oracle 9i SQL查询-多次连接同一个表

mysql - 奇怪的 SUM() 结果

MySQL:在一行中选择多条记录

mysql - 动态选择列名(基于另一个表行的值)

java - 无法编写 jooq 查询