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

2021-08-26 06:59:21 字數 1401 閱讀 5376

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

需要將selectes.nameprimary_school,count(distinctesi.stu_id)primary_numfrom……、selectes.nameashigh_school,count(distinctesi.stu_id)ashigh_numfrom……、selectcount(distinctesi.stu_id)total_numfrom……的結果放到一起,由於結果之間沒什麼關係,先給獲取到的結果新增編號,select@rownumb:=@rownumb+1asrownum,resources.*from(select@rownumb:=0)r,(……)resources,然後根據編號將三個結果集合並起來:

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

from

(……)b

leftjoin

(……)a

ona.rownum=b.rownum

leftjoin

(……)c

onc.rownum=b.rownum

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

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的資料橫向放在乙個表中展示,兩個之間沒什麼關係,哪個的資料量多也不確定,廢了段時間,才折騰出如下的解決方法 需要將select es.name primary school count distinct esi.stu id primary num f...

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...