mysql中如何將幾個沒有關係的結果集放在一起

2021-05-31 22:06:31 字數 1450 閱讀 7514

昨天在做報表的時候,遇到要把型別a的資料和型別b的資料橫向放在乙個表中展示,兩個之間沒什麼關係,哪個的資料量多也不確定,廢了段時間,才折騰出如下的解決方法:

需要將select es.name primary_school ,count(distinct esi.stu_id) primary_num from……、select  es.name as high_school,count(distinct esi.stu_id) as high_num from……、select count(distinct esi.stu_id) total_num from……的結果放到一起,由於結果之間沒什麼關係,先給獲取到的結果新增編號,select @rownumb:=@rownumb+1 as rownum, resources.*   from (select @rownumb:=0) r,(……)resources,然後根據編號將三個結果集合並起來:

select c.rownum,b.high_school,b.high_num,a.primary_school,a.primary_num, c.total_num

from 

(……) b

left join 

(……) a 

on a.rownum = b.rownum

left join

(……) c 

on c.rownum = b.rownum

這個結果如果剛好b裡面的行數最多是沒有問題的,但問題是不知道a、b哪個裡面的行數最多,解決這個問題,如果可以用full join就可以直接解決了,但full join對於使用的mysql版本不可用,採取的方法是用union all將幾個left join後得到的結果合併在一起:

select distinct high_school,high_num,primary_school,primary_num, total_num

from

(select c.rownum,b.high_school,b.high_num,a.primary_school,a.primary_num, c.total_num

from

(……) b

left join

(……) a

on a.rownum = b.rownum

left join

(……) c

on c.rownum = b.rownum

union all

select c.rownum,b.high_school,b.high_num,a.primary_school,a.primary_num, c.total_num

from

(……) a

left join

(……) b

on a.rownum = b.rownum

left join

(……) c

on c.rownum = a.rownum

) ee

mysql中如何將幾個沒有關係的結果集放在一起

昨天在做報表的時候,遇到要把型別a的資料和型別b的資料橫向放在乙個表中展示,兩個之間沒什麼關係,哪個的資料量多也不確定,廢了段時間,才折騰出如下的解決方法 需要將selectes.nameprimary school,count distinctesi.stu id primary numfrom ...

vue沒有關係的元件之間相互通訊

當元件之間沒有關係的時候,可以採用vuex來使元件可以相互可以觸發事件 在vuex中定義乙個變數msg import vue from vue import vuex from vuex vue.use vuex export default new vuex.store mutations act...

類的大小和其成員函式(非虛)沒有關係

我們先來看看類的記憶體結構吧 class a int read public virtual int as 對於以上的類的說明,當建立乙個例項時,其記憶體結構如下 不同的c 實現略有不同 0000 成員變數 int a 0004 a vtable指標 0000 成員函式指標 as 為什麼op函式和r...