我试图在SQL语句中计算。我试图计算每个客户invoice.total栏中的总金额。我创建了以下语句:

SELECT customers.firstname, customers.lastname, customers.status, SUM(invoice.total) AS total
FROM customers
INNER JOIN invoice
ON customers.id=invoice.id;

当我运行这个时,我得到表中的总数。我在这个表中有15个不同的客户,但是我只得到第一个客户的名字和所有客户的总数。我做错什么了?

最佳答案

首先,需要在希望获得聚合结果时对数据进行分组:

SELECT customers.firstname, customers.lastname, customers.status, SUM(invoice.total) AS total
FROM customers
INNER JOIN invoice
    ON customers.id=invoice.id
GROUP BY customers.firstname, customers.lastname, customers.status;

第二,你确定你是用正确的字段连接表的吗?invoice.id列是否正确?我希望invoice.id是表的主键,而不是外键的另一列,例如invoice.customerid。请仔细检查一下是否正确。
更新:正如评论中提到的,如果您有两个同名、姓和状态相同的客户,则数据将被错误地分组。在这种情况下,您需要在customers.idSELECT语句中添加唯一字段(例如GROUP BY)。

关于mysql - 使用内部联接在SQL中进行计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35679684/

10-14 05:20