select name,sum(amount) as balance from users left join transactions on users.account=transactions.account group by name having sum(account)>10000; 这句Mysql语句中为什么Column 'account' in having clause is ambiguous
时间: 2024-03-24 08:37:36 浏览: 57
在 SQL 查询中,如果查询语句中的多个表或子查询中有相同名称的列,则必须在使用这些列时使用表或别名来区分它们。
在这个查询中,`sum(account)` 既可以是 `users` 表中的 `account` 列,也可以是 `transactions` 表中的 `account` 列,因为这两个表都包含了 `account` 列。因此,在 `having` 子句中,MySQL 不知道应该使用哪个表的 `account` 列。
为了解决这个问题,您需要指定该列所属的表,例如:
```
SELECT name, SUM(amount) AS balance
FROM users
LEFT JOIN transactions ON users.account = transactions.account
GROUP BY name
HAVING SUM(transactions.account) > 10000;
```
这里我们使用了 `transactions.account` 来明确指定 `account` 列属于 `transactions` 表。
阅读全文