我有两个名为 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/