MySQL group by和left join并用解決方式
MySQL group by和left join并用
最近在做一個(gè)聯(lián)查時(shí)遇到了一個(gè)問題,group by和left join并用的時(shí)候,發(fā)現(xiàn)記錄沒法查出來,原因其實(shí)
是自己的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;
上面的這種寫法主要是想通過聯(lián)查然后統(tǒng)計(jì)出記錄表用戶所有的money字段,但是如果在記錄表沒有記錄的情況下,group by查出來的結(jié)果會(huì)為空,這樣就導(dǎo)致了用戶數(shù)據(jù)也顯示不出來了。
重寫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的統(tǒng)計(jì)也能獲取到,棒!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
PHP使用mysqli擴(kuò)展連接MySQL數(shù)據(jù)庫(kù)
這篇文章主要介紹了PHP使用mysqli擴(kuò)展連接MySQL數(shù)據(jù)庫(kù),需要的朋友可以參考下2014-08-08mysql中find_in_set()函數(shù)用法及自定義增強(qiáng)函數(shù)
MySQL 中的 FIND_IN_SET 函數(shù)用于在逗號(hào)分隔的字符串列表中查找指定字符串的位置,本文就來介紹一下mysql中find_in_set()函數(shù)用法及自定義增強(qiáng)函數(shù)2024-08-08windows下mysql 8.0.15 詳細(xì)安裝使用教程
這篇文章主要為大家詳細(xì)介紹了windows下mysql 8.0.15 詳細(xì)安裝使用教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08MySQL 獲得當(dāng)前日期時(shí)間的函數(shù)小結(jié)
MySQL 獲得當(dāng)前日期時(shí)間的函數(shù)小結(jié),需要的朋友可以參考下。2011-12-12千萬級(jí)記錄的Discuz論壇導(dǎo)致MySQL CPU 100%的優(yōu)化筆記
談到自己在解決一個(gè)擁有 60 萬條記錄的 MySQL 數(shù)據(jù)庫(kù)訪問時(shí),導(dǎo)致 MySQL CPU 占用 100% 的經(jīng)過。在解決問題完成優(yōu)化(optimize)之后,我發(fā)現(xiàn) Discuz 論壇也存在這個(gè)問題,當(dāng)時(shí)稍微提了一下2010-12-12mysql5.5 master-slave(Replication)主從配置
在主機(jī)master中對(duì)test數(shù)據(jù)庫(kù)進(jìn)行sql操作,再查看從機(jī)test數(shù)據(jù)庫(kù)是否產(chǎn)生同步。2011-07-07利用mycat實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)讀寫分離的示例
本篇文章主要介紹了利用mycat實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)讀寫分離的示例,mycat是最近很火的一款國(guó)人發(fā)明的分布式數(shù)據(jù)庫(kù)中間件,它是基于阿里的cobar的基礎(chǔ)上進(jìn)行開發(fā)的,有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03