【问题标题】:How to Join mysql Tables With Sum如何使用 Sum 加入 mysql 表
【发布时间】:2013-12-08 21:39:39
【问题描述】:

如何加入以下 SQL 查询?

SELECT SUM( payments.amount ) , SUM( payments.balance ) , records.recordID, records.record
FROM fees AS payments
INNER JOIN recordtype AS records ON payments.referenceID = records.recordID

上面的查询给出了以下错误

MySQL 说:文档

1140 - 如果没有 GROUP BY 子句,混合没有 GROUP 列的 GROUP 列 (MIN(),MAX(),COUNT(),...) 是非法的

我的期望结果希望每个记录 ID 显示其拥有的余额和金额。

感谢和问候,欢迎所有建议和问题

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:
    SELECT SUM( payments.amount ) , SUM( payments.balance ) , records.recordID, records.record
    FROM fees AS payments INNER JOIN recordtype AS records 
    ON payments.referenceID = records.recordID
    GROUP BY records.recordID, records.record
    

    当您在 SELECT 语句中使用聚合函数时,您必须告诉 sql 如何使用 GROUP BY clause 对该列进行聚合,

    简单的经验法则,当您在 SELECT 语句中使用聚合函数 (COUNT,MAX, MIN, SUM, AVG) 时,该 SELECT 中的任何其他列不包含在该语句的任何聚合函数 MUST come in GROUP BY 子句中。

    【讨论】:

    • 伟大的工作 Muhammed ali 按预期工作,我会尽快标记为答案
    • @user2985621 没问题,很高兴它有帮助:)
    【解决方案2】:

    您的 SQL 语句不起作用,因为您没有明确计算什么。如果您使用 sum() 或 max() 或 min() 或类似的东西,则必须在语句中使用 group by。所以,例如如果您想计算客户在您的商店购买的总金额,请使用以下代码:

    SELECT SUM( payments.amount )
    FROM payments
    inner join customer on payments.customer_id = customer.id 
    GROUP BY customer.id
    

    而且,如果您不想只检查一个客户,则必须使用 SQL clouse “haveing”。在这种情况下哪里行不通。

    【讨论】:

    • 感谢 Shimu 分享想法,感谢您的解释
    猜你喜欢
    • 2015-02-08
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2016-10-25
    相关资源
    最近更新 更多