mysql一次將多條不同sql查詢結(jié)果并封裝到一個(gè)結(jié)果集的實(shí)現(xiàn)方法
前言
最近遇到一個(gè)統(tǒng)計(jì)查詢需求,要求一次性查詢多個(gè)統(tǒng)計(jì)信息,其中兩個(gè)查詢信息不在一個(gè)表中,也沒(méi)有業(yè)務(wù)關(guān)聯(lián),表中也沒(méi)有做連接處理。不考慮產(chǎn)品設(shè)計(jì)是否合理,完全是實(shí)際需求如此,需要一次性查詢出來(lái)返回給前端進(jìn)行展示,對(duì)于這種“非常規(guī)”的統(tǒng)計(jì)查詢平??隙〞?huì)遇見(jiàn),感覺(jué)有點(diǎn)代表性,所以簡(jiǎn)單記錄一下。希望對(duì)有相同需求的同學(xué)可以作為參考。
問(wèn)題處理過(guò)程
簡(jiǎn)單交代一下業(yè)務(wù)場(chǎng)景,為方便理解,對(duì)業(yè)務(wù)需求做了簡(jiǎn)化處理。
現(xiàn)在有一個(gè)分銷活動(dòng),每個(gè)人都可以成為分銷人進(jìn)行分享活動(dòng),一旦有人通過(guò)分享的活動(dòng)連接購(gòu)買之后分銷人會(huì)有收益信息,當(dāng)然分銷活動(dòng)商品也可以不通過(guò)分享鏈接而是直接購(gòu)買,但是不會(huì)存在分銷收益一說(shuō)。表結(jié)構(gòu)方面,所有的訂單都存入訂單表order
中,對(duì)于存在分銷關(guān)系的會(huì)將分銷綁定信息(分銷人與被分銷人)記錄到record
表中,不通過(guò)分銷直接購(gòu)買的不會(huì)在record
表中添加記錄。現(xiàn)在要求統(tǒng)計(jì)一下當(dāng)天的訂單總數(shù)與分銷記錄總數(shù),假設(shè)當(dāng)天為2022.11.08。
如果是單獨(dú)統(tǒng)計(jì)計(jì)算很簡(jiǎn)單,直接統(tǒng)計(jì)總數(shù)就可以:
統(tǒng)計(jì)當(dāng)天的總訂單數(shù):
SELECT COUNT(1) total_couut FROM order WHERE DATE_FORMAT(order_create_time,'%Y-%m-%d') = '2022-11-08'
統(tǒng)計(jì)當(dāng)天的分銷總的分銷記錄數(shù):
SELECT COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08'
但是如何將兩個(gè)不同的統(tǒng)計(jì)信息封裝到一個(gè)結(jié)果集中,這里提供一種處理方案,使用union all
進(jìn)行并列查詢,然后進(jìn)行求和查詢。具體實(shí)現(xiàn)方式如下。
1.使用union all進(jìn)行并列查詢
為保證查詢出來(lái)的參數(shù)信息一致,查詢訂單總數(shù)時(shí)補(bǔ)充上分銷記錄總數(shù),查詢分銷記錄總數(shù)補(bǔ)充上訂單總數(shù),具體實(shí)現(xiàn)如下:
SELECT COUNT(1) total_couut,0 record_count FROM order WHERE DATE_FORMAT(order_create_time,'%Y-%m-%d') = '2022-11-08' union all SELECT 0 total_count,COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08'
查詢結(jié)果如下:
2.求和處理
現(xiàn)在已經(jīng)查詢出總訂單數(shù)和總分銷記錄數(shù),下面需要處理的是如何封裝到一個(gè)結(jié)果集中,處理的方式也很簡(jiǎn)單,就是直接求和,因?yàn)閷?duì)應(yīng)的字段值都為0,。具體實(shí)現(xiàn)如下:
select sum(t.total_count) total_count, sum(t.record_count) record_count from (SELECT COUNT(1) total_couut,0 record_count FROM order WHERE DATE_FORMAT(order_create_time,'%Y-%m-%d') = '2022-11-08' union all SELECT 0 total_count,COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08') t
查詢結(jié)果如下:
至此問(wèn)題解決,一條sql將多條無(wú)法進(jìn)行關(guān)聯(lián)的sql封裝到一個(gè)結(jié)果集中。
總結(jié)
到此這篇關(guān)于mysql一次將多條不同sql查詢結(jié)果并封裝到一個(gè)結(jié)果集實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)mysql多條sql查詢結(jié)果封裝到一個(gè)結(jié)果集內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySql超長(zhǎng)自動(dòng)截?cái)鄬?shí)例詳解
這篇文章主要介紹了MySql超長(zhǎng)自動(dòng)截?cái)鄬?shí)例詳解的相關(guān)資料,這里通過(guò)實(shí)例來(lái)說(shuō)明如何實(shí)現(xiàn)自動(dòng)截?cái)嗟墓δ?,需要的朋友可以參考?/div> 2017-07-07Mysql如何在linux中實(shí)現(xiàn)定時(shí)備份
這篇文章主要介紹了Mysql如何在linux中實(shí)現(xiàn)定時(shí)備份,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09完美解決mysql客戶端授權(quán)后連接失敗的問(wèn)題
下面小編就為大家?guī)?lái)一篇完美解決mysql客戶端授權(quán)后連接失敗的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03Mysql數(shù)據(jù)庫(kù)值的添加、修改、刪除及清空操作實(shí)例
這篇文章主要給大家介紹了關(guān)于Mysql數(shù)據(jù)庫(kù)值的添加、修改、刪除及清空操作的相關(guān)資料,文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下2021-06-06Mysql 5.6 "隱式轉(zhuǎn)換"導(dǎo)致的索引失效和數(shù)據(jù)不準(zhǔn)確的問(wèn)題
這篇文章主要介紹了Mysql 5.6 “隱式轉(zhuǎn)換”導(dǎo)致的索引失效和數(shù)據(jù)不準(zhǔn)確的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12詳解Mysql多表聯(lián)合查詢效率分析及優(yōu)化
這篇文章主要介紹了Mysql多表聯(lián)合查詢效率分析及優(yōu)化,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-08-08最新評(píng)論