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并用的時候,發(fā)現記錄沒法查出來,原因其實
是自己的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%的優(yōu)化筆記
談到自己在解決一個擁有 60 萬條記錄的 MySQL 數據庫訪問時,導致 MySQL CPU 占用 100% 的經過。在解決問題完成優(yōu)化(optimize)之后,我發(fā)現 Discuz 論壇也存在這個問題,當時稍微提了一下2010-12-12mysql5.5 master-slave(Replication)主從配置
在主機master中對test數據庫進行sql操作,再查看從機test數據庫是否產生同步。2011-07-07