【发布时间】:2011-03-27 17:00:04
【问题描述】:
根据谷歌搜索:由于 MySQL 不支持完全外连接,因此可以通过 union 和/或 union all 进行模拟。但这两者要么删除真正的重复项,要么显示虚假的重复项。
什么是正确有效的方法?
这个question 似乎很相关,但无法得到答案。
【问题讨论】:
标签: mysql outer-join
根据谷歌搜索:由于 MySQL 不支持完全外连接,因此可以通过 union 和/或 union all 进行模拟。但这两者要么删除真正的重复项,要么显示虚假的重复项。
什么是正确有效的方法?
这个question 似乎很相关,但无法得到答案。
【问题讨论】:
标签: mysql outer-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
维基百科上也有关于这个话题的一些信息:Full outer join。
维基百科文章建议在 MySQL 中使用 UNION。这比 UNION ALL 稍慢,但更重要的是它不会总是给出正确的结果——它会从输出中删除重复的行。所以更喜欢在这里使用 UNION ALL 而不是 UNION。
【讨论】: