您好,登錄后才能下訂單哦!
這篇文章主要講解了“mysql中怎么用一條sql將多條無法進行關聯的sql封裝到一個結果集中”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“mysql中怎么用一條sql將多條無法進行關聯的sql封裝到一個結果集中”吧!
簡單交代一下業務場景,為方便理解,對業務需求做了簡化處理。
現在有一個分銷活動,每個人都可以成為分銷人進行分享活動,一旦有人通過分享的活動連接購買之后分銷人會有收益信息,當然分銷活動商品也可以不通過分享鏈接而是直接購買,但是不會存在分銷收益一說。表結構方面,所有的訂單都存入訂單表order
中,對于存在分銷關系的會將分銷綁定信息(分銷人與被分銷人)記錄到record
表中,不通過分銷直接購買的不會在record
表中添加記錄。現在要求統計一下當天的訂單總數與分銷記錄總數,假設當天為2022.11.08。
如果是單獨統計計算很簡單,直接統計總數就可以:
統計當天的總訂單數:
SELECT COUNT(1) total_couut FROM order WHERE DATE_FORMAT(order_create_time,'%Y-%m-%d') = '2022-11-08'
統計當天的分銷總的分銷記錄數:
SELECT COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08'
但是如何將兩個不同的統計信息封裝到一個結果集中,這里提供一種處理方案,使用union all
進行并列查詢,然后進行求和查詢。具體實現方式如下。
為保證查詢出來的參數信息一致,查詢訂單總數時補充上分銷記錄總數,查詢分銷記錄總數補充上訂單總數,具體實現如下:
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'
查詢結果如下:
現在已經查詢出總訂單數和總分銷記錄數,下面需要處理的是如何封裝到一個結果集中,處理的方式也很簡單,就是直接求和,因為對應的字段值都為0,。具體實現如下:
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
查詢結果如下:
感謝各位的閱讀,以上就是“mysql中怎么用一條sql將多條無法進行關聯的sql封裝到一個結果集中”的內容了,經過本文的學習后,相信大家對mysql中怎么用一條sql將多條無法進行關聯的sql封裝到一個結果集中這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。