手工全外连接

时间:2013-03-04 09:11:33

标签: sql database join

我试图通过使用这些简单的表来理解完全外连接

t1
-----------
 a  | b
===========
 1  | 2
----------- 

t2
------------
  b  |  c
===========
  2  | 3
------------

t3
-------------
  a  |  c
=============
  4  |  5
-------------

To understand select * from t1 natural full outer join (t2 natural full outer join t3);

我先试了select * from t2 natural full outer join t3 我将其称为result

-----------------
  a  |  b  |  c
=================
     | 2   | 3
----------------
  4  |     | 5
------------------

然后我试了

从t1自然全外连接(结果)中选择*

    t1             result
-----------      -----------------
 a  | b           a    |  b  | c
===========      =================
 1  | 2                | 2   | 3
-----------      ----------------
                    4  |     | 5
                 ------------------

不应该是

--------------------------
   a    |  b  |  c
===========================
   1    |  2  | 3
-------------------------
  4     |     | 5

我不太明白sql查询如何提供

 a | b | c 
---+---+---
 4 |   | 5
   | 2 | 3
 1 | 2 | 

1 个答案:

答案 0 :(得分:1)

您可以使用UNION ALL(指定 ALL以保留重复项)来执行此操作。

SELECT  a, b, NULL as c FROM t1
UNION ALL
SELECT  NULL as a, b, c FROM t2
UNION ALL
SELECT  a, NULL as b, c FROM t3