MySQL group by 和 left join并用解决记录

最近在做一个联查时遇到了一个问题,group by和left join并用的时候,发现记录没法查出来,原因其实
是自己的sql写得不太好,在同事帮助下得到了解决,下面上SQL
account_log为记录表
customer为用户表

没解决前的sql:

SELECT customer.Alias,SUM(account_log.money) AS money,account_log.cid AS cid
FROM `customer`
LEFT JOIN account_log ON account_log.cid = customer.id
WHERE customer.Alias = '123' 
GROUP BY customer.Alias;

上面的这种写法主要是想通过联查然后统计出记录表用户所有的money字段,但是如果在记录表没有记录的情况下,group by查出来的结果会为空,这样就导致了用户数据也显示不出来了。
重写sql如下:

SELECT * FROM  `customer` c LEFT JOIN 
`(SELECT cid,SUM(money) AS money FROM account_log GROUP BY cid ) m`
ON c.id = m.cid
WHERE  c.Alias = '123'

居然还有这种操作,left join里面居然还能用子查询,money的统计也能获取到,棒!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值