根据Google搜索:由于MySQL不支持完全外连接,因此可以通过union和/或union all进行模拟.但这两者要么删除真正的重复,要么显示虚假的重复.
什么是正确有效的方法?
这个问题似乎很有意义,但无法得到答案.
你可以使用LEFT JOIN和RIGHT JOIN:
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
Run Code Online (Sandbox Code Playgroud)
维基百科上还有一些关于此主题的信息:全外连接.
维基百科文章建议在MySQL中使用UNION.这比UNION ALL略慢,但更重要的是它不会总是给出正确的结果 - 它将从输出中删除重复的行.所以更喜欢在这里使用UNION ALL而不是UNION.