我在 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/