mysql - 一对多关系中有多少行?

标签 mysql sql one-to-many

我在 MySQL 上有两个表,结构如下:

用户: 编号 |姓名

帐户: 编号 |用户名 |金额

我需要一个查询来获取每个用户的总帐户数,结果中也包含用户名。有没有办法做到这一点?我已经在 from 子句中尝试了子查询,但我不知道如何使用连接来实现这一点,但我怀疑这是否是解决方案...有什么想法吗?

这是我假装得到的示例数据和示例输出:

Users
1 | 'John'
2 | 'Peter'

Accounts
1 | 1 | 1000
2 | 1 | 2000
3 | 2 | 1500

query:
'John'  | 2  <- there are 2 accounts for user 'John'
'Peter' | 1  <- there is only 1 account for user 'Peter'

另外,如果我想获得更多关于结果的汇总数据怎么办?说...总量。例如:

another query:
'John'  | 2 | 3000 <- 2 accounts for John, which sums 3000
'Peter' | 1 | 1500 <- 1 account for Peter, which sums 1500

最佳答案

下面是获取用户名及其帐户数的查询:

SELECT u.name, COUNT(a.id) AS numAccounts
FROM Users u
LEFT JOIN Accounts a ON u.id=a.userid
GROUP BY u.id;

要获取金额列的总和,您可以执行以下操作:

SELECT u.name, COUNT(a.id) AS numAccounts, SUM(u.amount) AS totalAmount
FROM Users u
LEFT JOIN Accounts a ON u.id=a.userid
GROUP BY u.id;

关于mysql - 一对多关系中有多少行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9028154/

相关文章:

swift - 使用 Core Data 获取一对多关系

mysql单表覆盖索引查询优化策略

java - 如何从 JBCD 结果集中获取整数?

php - 为什么我的登录表单无法在 php 中正确提交

sql - 没有键列的两个表的区别

algorithm - pytorch:对两个不同大小的张量执行运算的有效方法,其中一个张量具有一对多关系

mysql - 选择当前时间 "now ()"并将其转换为 GMT 0

python - Django 查询将参数传递到values()

sql - 查询嵌套查询结果中两列的位置

powershell - Powershell开关一对多关联