我想確保在使用Union distinct時保留子查詢結果的順序。請注意,在進行聯合時,需要使用「union distinct」來過濾重複項。MySQL - 在使用「Union distinct」構造時保留子查詢記錄的順序
例如:
select columnA1, columnA2 from tableA order by [columnA3] asc
union distinct
select columnB1, columnB2 from tableB
當我運行此,我期待從子查詢訂購的記錄(由[columnA3] ASC從TableA的順序選擇columnA1,columnA2)誰先(由順序返回由columnA3 asc)接着是來自tableB的那些。
我假設我不能添加另一個虛擬列,因爲這會使工會不同,不工作。所以,這是不行的:
select column1, column2 from
(select column1, column2, 1 as ORD from tableA order by [columnA3] asc
union distinct
select column1, column2, 2 as ORD from tableB
) order by ORD
爲什麼你不能添加一個虛擬列?它有什麼問題? – Karolis
@Karolis來自tableA和tableB的記錄的唯一性基於pair {column1。列2}。添加一個虛擬列(以確保順序)使它們不唯一。 – user965692
是的,我明白你想從凱德的回答中做出什麼:) – Karolis