SQL查询问题:计算客户总余额并获取最后新增日期
解决获取客户最后钱包更新日期的问题
你的问题出在分组后直接选取date_added字段——当使用GROUP BY cw.cus_id时,数据库会返回该客户分组内任意一条记录的date_added值(MySQL非严格模式下的行为),这就是你得到最早日期的原因。要获取每个客户的最后新增日期,需要用聚合函数MAX()提取分组内的最大日期值。
修改后的查询如下:
SELECT ROUND(SUM(credit_in) - SUM(credit_out), 2) AS balance, MAX(cw.date_added) AS last_updated_date FROM customer_wallet cw LEFT JOIN customers c ON c.id = cw.cus_id GROUP BY cw.cus_id ORDER BY last_updated_date DESC
关键修改点:
- 用
MAX(cw.date_added)替代直接选取cw.date_added,确保拿到每个客户钱包记录里的最新日期 - 排序时使用别名
last_updated_date,逻辑更清晰(也可以直接写MAX(cw.date_added),但别名更易读)
内容的提问来源于stack exchange,提问作者RNK
相关产品推荐
相关产品推荐

