小编典典

如何在 MySQL 中进行 FULL OUTER JOIN?

all

我想在 MySQL 中进行
完全外部联接。
这可能吗?MySQL是否支持 完全外连接?


阅读 143

收藏
2022-03-02

共1个答案

小编典典

您在 MySQL 中没有 完全连接,但您可以肯定地
模拟它们

对于从这个 问题转录的代码 示例
,您有:

有两个表 t1, t2:

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id

上面的查询适用于完全外连接 操作不会产生任何重复行的特殊情况。上面的查询依赖于UNIONset 运算符来删除查询模式引入的重复行。
我们可以通过对第二个查询使用反连接 模式来避免引入重复行,然后使用 UNION ALL
集合运算符来组合这两个集合。在更一般的情况下,完全外连接会返回重复的行,我们可以这样做:

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
WHERE t1.id IS NULL
2022-03-02