根据Google搜索:由于MySQL不支持完全外部联接,因此可以通过union和/或union all模拟它。但是,这两者要么删除正版副本,要么显示伪造副本。
什么是正确有效的方式?
这个问题似乎相关,但无法获得答案。
您可以使用左联接和右联接:
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。