2012-06-22 34 views
0

我想知道我是否可以先執行完整的外部兩個表之間的連接一整列名單上,如果失敗,部分列的列表。 例如:全外連接第一,否則部分列清單

Table A 
| a | b | c | 
+-----+-----+-----+ 
| x | y | z | 
| q | r | s | 


Table B 
| a | b | c | d | e | 
+-----+-----+-----+-----+-----+ 
| q | r | s | t | u | 
| q | r |  | x | y | 
|  |  |  | x | y | 

Failed query: 
SELECT * 
FROM A FULL OUTER JOIN B 
ON 
(A.a = B.a AND A.b = B.b AND A.c = B.c) 
OR (A.a = B.a AND A.b = B.b) 

Desired result 
| a | b | c | d | e | 
+-----+-----+-----+-----+-----+ 
| x | y | z |  |  | 
| q | r | s | t | u | 
| q | r |  | x | y | 
|  |  |  | x | y | 

我正在使用Postgresql。感謝你的協助。

回答

1

該查詢究竟會產生期望的結果:

SELECT * 
FROM A 
FULL JOIN B USING (a,b,c) 
ORDER BY a DESC NULLS LAST; 

但我並不完全相信你的例子適合您的描述 - 留下解釋的餘地​​。

+0

感謝歐文。反思我的例子後,我意識到我的問題是不是在加入,但我怎麼查詢的連接的結果。我的錯誤:SELECT A.A,A·B,交流轉換器,B.d,B.e;代替:SELECT A,B,C,d,E。 – user1473735