3 回答

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊
您可以通過為每個(gè)選擇添加一個(gè)名為rank的偽列來(lái)執(zhí)行此操作,在按照其他條件進(jìn)行排序之前,可以首先對(duì)其進(jìn)行排序,例如:
select *
from (
select 1 as Rank, id, add_date from Table
union all
select 2 as Rank, id, add_date from Table where distance < 5
union all
select 3 as Rank, id, add_date from Table where distance between 5 and 15
) a
order by rank, id, add_date desc

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用子查詢來(lái)執(zhí)行此操作:
select * from (select values1 from table1 order by orderby1) as a
union all
select * from (select values2 from table2 order by orderby2) as b

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
聯(lián)合查詢只能有一個(gè)主ORDER BY子句IIRC。為了得到這一點(diǎn),在每個(gè)查詢組成更大的UNION查詢,添加一個(gè)字段,將在是你的一個(gè)字段排序UNION的ORDER BY。
例如,您可能會(huì)遇到類似
SELECT field1, field2, '1' AS union_sort
UNION SELECT field1, field2, '2' AS union_sort
UNION SELECT field1, field2, '3' AS union_sort
ORDER BY union_sort
該union_sort字段可以是您可能要排序的任何內(nèi)容。在此示例中,恰好是將結(jié)果從第一個(gè)表放在第一位,將第二個(gè)表放在第二位,依此類推。
添加回答
舉報(bào)