MySQL group by和left join并用解决方式
更新时间:2023年12月16日 14:38:39 作者:政清
这篇文章主要介绍了MySQL group by和left join并用解决方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
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的统计也能获取到,棒!
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
mysql中find_in_set()函数用法及自定义增强函数
MySQL 中的 FIND_IN_SET 函数用于在逗号分隔的字符串列表中查找指定字符串的位置,本文就来介绍一下mysql中find_in_set()函数用法及自定义增强函数2024-08-08
千万级记录的Discuz论坛导致MySQL CPU 100%的优化笔记
谈到自己在解决一个拥有 60 万条记录的 MySQL 数据库访问时,导致 MySQL CPU 占用 100% 的经过。在解决问题完成优化(optimize)之后,我发现 Discuz 论坛也存在这个问题,当时稍微提了一下2010-12-12
mysql5.5 master-slave(Replication)主从配置
在主机master中对test数据库进行sql操作,再查看从机test数据库是否产生同步。2011-07-07


最新评论