2015-10-18 94 views
0

我有兩個查詢被「合併」與聯盟:如何按工會結果訂購?

A 

union 

B 

我想要的結果是爲了通過特定的列。

例如:

id sum dateissue 
5  30  1.1.15 
8  14  2.4.15 

id sum dateissue 
13  30  1.4.12 
8  14  4.4.15 
聯盟

期望的結果與爲了通過 dateissue柱後:

id sum dateissue 
13 30  1.4.12   : from B   
5  30  1.1.15   : from A 
8  14  2.4.15   : from A 
8  14  4.4.15   : from B 

我試圖做

(A) 
Union 
(B) 
order by dateissue 

,但它給錯誤:

ERROR: column "dateissue" does not exist

我如何排序工會的結果呢?

+0

該特定順序背後的邏輯是什麼?應該超過1.4嗎? – Mihai

+0

@Mihai它是由發佈的專欄命令....查看年... 1.4.12在1.1.15之前提供 – SMW

+0

提供查詢A和B的代碼。通常'UNION'可以有'ORDER BY '。 –

回答

2

你只需要確保第一個選擇實際提取'dateissue',即

select id, sum, dateissue 
from a 
where... 

union 

select id, sum, dateissue 
from a 
where... 

order by dateissue; 

爲了澄清,'order by'應用於完整的結果集(聯合之後)。

+0

@ypercube指出。 –

1
SELECT * 
FROM 
     (
      SELECT id, sum, dateissue FROM A 
      UNION ALL 
      SELECT id, sum, dateissue FROM B 
     ) dum 
ORDER BY dateissue 

的順序是SELECT影響*

SELECT * FROM (

SELECT id, sum, dateissue FROM A 
UNION ALL 
SELECT id, sum, dateissue FROM B 
) dum -> 

id sum dateissue 
5  30  1.1.15 
8  14  2.4.15 
13  30  1.4.12 
8  14  4.4.15 

ORDER BY dateissue -> 

id sum dateissue 
13 30  1.4.12   
5  30  1.1.15 
8  14  2.4.15 
8  14  4.4.15 

,你都可以使用UNION:What is the difference between UNION and UNION ALL?在同一行的情況下

0

試試這個:

SELECT * FROM A 
UNION 
SELECT * FROM B 
ORDER BY dateissue;