一尘不染

在MySQL中模拟完全外部联接的有效方法?

mysql

根据Google搜索:由于MySQL不支持完全外部联接,因此可以通过union和/或union
all模拟它。但是,这两者要么删除正版副本,要么显示伪造副本。

什么是正确有效的方式?

这个问题似乎相关,但无法获得答案。


阅读 232

收藏
2020-05-17

共1个答案

一尘不染

您可以使用左联接和右联接:

SELECT * FROM tableA LEFT JOIN tableB ON tableA.b_id = tableB.id
UNION ALL
SELECT * FROM tableA RIGHT JOIN tableB ON tableA.b_id = tableB.id
WHERE tableA.b_id IS NULL

在Wikipedia上也有关于此主题的一些信息:完全外部联接

维基百科文章建议在MySQL中使用UNION。这比UNION ALL慢一点,但更重要的是,它不会总是给出正确的结果-
它将从输出中删除重复的行。因此,这里更喜欢使用UNION ALL而不是UNION。

2020-05-17