我有两个名为 TableA 和 TableB 的表

让我们说表A

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

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

我怎样才能做到这一点 ?

最佳答案

标准 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)

关于sql - 从 SQL 表中获取常见和不常见的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11982960/

10-15 09:22