从SQL表中获取常见和不常见的记录

时间:2012-08-16 08:02:39

标签: sql

我有两个名为TableA和TableB的表格

让我们说TableA

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

让我们说TableB

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

我很难得到这个结果。我需要记录,如果两列的值都比一行中显示的值相同,否则不是。

我该怎么做?

1 个答案:

答案 0 :(得分: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)