Mysql 如何联接两个表以显示每个id的销售额

Mysql 如何联接两个表以显示每个id的销售额,mysql,sql,sum,inner-join,aggregate-functions,Mysql,Sql,Sum,Inner Join,Aggregate Functions,我试图通过使用id组合两个表来显示每个id的总销售额。我有两个表1。用户表,2。销售表 //user table -------------- | id | name | --------------- | 1 | yuki | | 2 | soman | --------------- // sales table -------------- | id | total| --------------- | 1 | 300 | | 2 | 23 | |

我试图通过使用id组合两个表来显示每个id的总销售额。我有两个表1。用户表,2。销售表

//user table

--------------
| id  | name  |
---------------
|  1  | yuki  |
|  2  | soman |
---------------


// sales table

--------------
| id  | total|
---------------
|  1  | 300  |
|  2  | 23   |
|  1  | 500  |
---------------
在我的查询中,它只显示1个销售,即yuki的销售


SELECT i.name,SUM(ROUND(s.total),2)) AS sales
FROM user i
INNER JOIN sales s
ON i.id = s.id
--------------
| name | sales|
---------------
| yuki | 800  |
---------------
我想这样显示输出,我的查询遗漏了什么

--------------
| name | sales|
---------------
| yuki | 800  |
|soman | 23   |
---------------

您的查询需要GROUPBY子句:

如果启用了sql模式ONLY\u FULL\u GROUP\u BY,则更容易发现此类错误

作为另一种选择,您可能需要考虑一个相关的子查询,它避免了外部聚合,它实际上像一个左连接,它可能更接近您想要的:

SELECT u.*, 
    (SELECT SUM(ROUND(s.total),2)) FROM sales s WHERE s.id = u.id) AS sales
FROM user u
旁注:user是一个语言关键字,因此不是一个很好的列名选择。考虑使用其他的东西,例如用户。

< P>你的查询需要一个GROUPBY子句:

如果启用了sql模式ONLY\u FULL\u GROUP\u BY,则更容易发现此类错误

作为另一种选择,您可能需要考虑一个相关的子查询,它避免了外部聚合,它实际上像一个左连接,它可能更接近您想要的:

SELECT u.*, 
    (SELECT SUM(ROUND(s.total),2)) FROM sales s WHERE s.id = u.id) AS sales
FROM user u

旁注:user是一个语言关键字,因此不是一个很好的列名选择。考虑使用其他的东西,例如用户。事实上,您的查询格式不正确,但MySQL接受并运行它!。如果没有组,则应拒绝查询,因为。。。这会让你产生困惑。明白了,谢谢!我希望你把它放在答案部分,这样我就可以勾选你的答案。谢谢你的关注!在末尾添加GROUP BY i.name。事实上,您的查询格式不正确,但MySQL接受并运行它!。如果没有组,则应拒绝查询,因为。。。这会让你产生困惑。明白了,谢谢!我希望你把它放在答案部分,这样我就可以勾选你的答案。谢谢你的关注!