【问题标题】:Get common and uncommon records from SQL tables从 SQL 表中获取常见和不常见的记录
【发布时间】:2012-08-16 08:02:39
【问题描述】:

我有两个名为 TableA 和 TableB 的表

让我们说 TableA

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

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

我该怎么做?

【问题讨论】:

    标签: sql


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-17
      • 2023-04-03
      • 1970-01-01
      • 2021-11-07
      • 2016-07-06
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      相关资源
      最近更新 更多