MYSQL SUM和INNER JOIN

时间:2013-11-12 12:46:33

标签: mysql join sum

我想在第一个colomn中有这个名字,但是我收到了一个错误。当我让P.name输出时,查询有效,但我看不到播放器名称。

现在我有以下查询:

SELECT P.Name, P.Playernr, SUM (F.Amount)
FROM FINES F
INNER JOIN PLAYERS P
ON F.Playernr = P.Playernr
GROUP BY  P.Playernr

提前感谢您的帮助

ONNO

3 个答案:

答案 0 :(得分:3)

您应该将其添加到GROUP BY子句中。

SELECT P.Name, P.Playernr, SUM (F.Amount)
FROM FINES F
INNER JOIN PLAYERS P
ON F.Playernr = P.Playernr
GROUP BY  P.Name,P.Playernr

答案 1 :(得分:0)

试试这个:

SELECT MAX(P.Name) as Name, P.Playernr, SUM (F.Amount)
FROM FINES F
INNER JOIN PLAYERS P
ON F.Playernr = P.Playernr
GROUP BY  P.Playernr

或将P.Name添加到Group BY

SELECT P.Name, P.Playernr, SUM (F.Amount)
FROM FINES F
INNER JOIN PLAYERS P
ON F.Playernr = P.Playernr
GROUP BY  P.Name,P.Playernr

答案 2 :(得分:0)

使用GROUP BY时,只能按列和聚合函数进行投影。删除投影列中的P.Name或在GROUP BY中添加P.Name

SELECT P.Name, P.Playernr, SUM (F.Amount)
FROM FINES F
INNER JOIN PLAYERS P
ON F.Playernr = P.Playernr
GROUP BY  P.Playernr, P.Name

在其他RDBMS中,您的查询会产生错误。

考虑以下数据:

P.Playernr   P.Name
A         B
A         C
A         D

然后,P.Name不在GROUP BY中,该值在SELECT P.Playernr中生成。因此,您必须使用聚合函数或在GROUP BY中添加P.Name