我试图在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.id
和SELECT
语句中添加唯一字段(例如GROUP BY
)。关于mysql - 使用内部联接在SQL中进行计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35679684/