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