2015-10-18 59 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;