3

我有两个名为 TableA 和 TableB 的表

让我们说表A

Id   TableAName 
------------------
 1     11
 2     12
 3     13
 4     14
 5     15

让我们说表B

Id   TableBName 
----------------
 1     11
 2     22
 3     23
 4     24
 5     25

我想要如下结果

 TableAName  TableBName
-------------------------
   11           11
   12           Null
   13           Null 
   14           Null  
   15           Null
   Null         22
   Null         23
   Null         24
   Null         25

我很困惑得到这个结果。我需要记录,如果两列的值与在一行中显示的值相同,否则不需要。

我怎样才能做到这一点 ?

4

1 回答 1

3

标准 SQL:

SELECT
  A.TableAName, B.TableBName
FROM
  TableA A
  FULL OUTER JOIN
  TableB B ON A.TableAName = B.TableBName

MySQL 不支持 FULL OUTER JOIN

SELECT
  A.TableAName, B.TableBName
FROM
  TableA A
  LEFT OUTER JOIN
  TableB B ON A.TableAName = B.TableBName
UNION
SELECT
  A.TableAName, B.TableBName
FROM
  TableA A
  RIGHT OUTER JOIN
  TableB B ON A.TableAName = B.TableBName

编辑,取自@Dems已删除的答案

您可以添加它以获得与上述相同的顺序

ORDER BY
     COALESCE(A.TableAName, B.TableAName)
于 2012-08-16T08:04:25.013 回答