我有这样的查询:
SELECT cus_id, ROUND(SUM(credit_in)-SUM(credit_out), 2) as balance, date_added
FROM `customer_wallet`
GROUP BY cus_id
它将获得客户的余额(唯一的客户)。如果余额为负,我想修改此值,然后它就会到来,并且我想要最新日期(date_added
)。
我尝试这样做:
SELECT cus_id, ROUND(SUM(credit_in)-SUM(credit_out), 2) as balance, date_added
FROM `customer_wallet`
GROUP BY cus_id
ORDER BY date_added
但是,它会在得到所有结果后给出排序的记录。我想要个人客户的最新记录。
让我知道您是否需要更多信息或架构。谢谢。
我也可以检查带有负余额的记录php
。但是,如果我可以在查询本身中做到这一点,那就太好了。
默认情况下,MYSQL不会强制您将未包含在聚合函数中的所有列都放在该Group By
子句中。这可能会返回奇怪的结果。
请尝试以下查询。
SELECT cus_id,
ROUND(SUM(credit_in)-SUM(credit_out), 2) as balance,
max(date_added) latest_transaction_date
FROM `customer_wallet`
GROUP BY cus_id
HAVING ROUND(SUM(credit_in)-SUM(credit_out), 2) < 0
如果您想了解有关Group By
MySQL的更多信息,可以查看此博客文章:Debunking GROUP BY myths。它已经很老了,但是如果您是MySQL的新手,它仍然很有趣。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句