SQL用了Union後排序應該怎麼實現

2021-10-23 21:28:37 字數 1862 閱讀 8522

最近使用sql語句進行union查詢,驚奇的發現:sql沒問題,union查詢也沒問題,都可以得到想要的結果,可是在對結果進行排序的時候,卻出問題了。

日常開發中,如果實用union all合併兩個已經排好序的結果集的時候,需求是第二個結果集資料排在第乙個結果集資料下面,單純的實用order by是無效的,因為order by的優先順序比union all低。

select `id`,`username`,`mobile`,`time`,id as leader 

from `grouporder_leader`

where `courseid` = 21 and `merchid` = 23 and `status` = 1

union all

select leadorderid,username,mobile,time,null

from `grouporder_partner`

where courseid=21 and status=1 and merchid=23

select `id`,`username`,`mobile`,`time`,id as leader 

from `grouporder_leader`

where `courseid` = 21 and `merchid` = 23 and `status` = 1

order by time desc

union all

select leadorderid,username,mobile,time,null

from `grouporder_partner`

where courseid=21 and status=1 and merchid=23

order by time desc

執行這條sql語句之後就報錯。

使用類似於建立臨時表的方法儲存查詢結果,然後對臨時表進行查詢排序。

select id,username,mobile,time,leader 

from (select `id`,`username`,`mobile`,`time`,id as leader

from `grouporder_leader` where `courseid` = 21 and `merchid` = 23 and `status` = 1

union all

select leadorderid,username,mobile,time,null

from `grouporder_partner` where courseid=21 and status=1 and merchid=23

) order by time desc

不知道為什麼第3步中查詢依舊沒有,然後對union查詢的結果起個別名,然後再查詢排序就沒問題了。

select a.id,a.username,a.mobile,a.time,a.leader 

from (select `id`,`username`,`mobile`,`time`,id as leader

from `grouporder_leader` where `courseid` = 21 and `merchid` = 23 and `status` = 1

union all

select leadorderid,username,mobile,time,null

from `grouporder_partner` where courseid=21 and status=1 and merchid=23

) as a

order by time desc

結果就正確了

SQL用了Union後的排序問題

最近使用sql語句進行union查詢,驚奇的發現 sql沒問題,union查詢也沒問題,都可以得到想要的結果,可是在對結果進行排序的時候,卻出問題了。1.union查詢沒問題 sql view plain copy select id username mobile time id as leade...

關於使用了ztree後排序的問題

ztree載入個人空間的目錄時,排序錯亂問題。檢查sql已新增排序,介面顯示順序不對。檢查sql執行效果,是按順序排序的 坑一,其實只是name按ascii排序了,但是中文的是有區分常用和不常用的漢字,將hashmap linkhashmap,排序有時生效 坑一問題 網上找了乙個拼音比較器,對col...

SQL 聯合查詢 Union

集合運算子是針對兩個集合操作的,兩個集合必須有相同的列數 列具有相同的資料型別 至少能夠隱式轉換的 最終輸出的集合的列名是,由第乙個集合的列名來確定的 可以用來連線多個結果 注意 聯合 union 與連線不一樣 join 聯合 將多個結果集,合併為乙個結果集。union 去除重複,相當於預設應用了d...