如何在MySQL中实现多个表的完全连接

如何在MySQL中实现多个表的完全连接,mysql,Mysql,我们一直在搜索它,但我们看到的只是左右内/外联接的两个表 我爱你们。MySQL不支持完全外部连接 正如您所提到的,您可以使用左外部联接和右外部联接的组合来模拟两个表的完全外部联接 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 I

我们一直在搜索它,但我们看到的只是左右内/外联接的两个表


我爱你们。

MySQL不支持完全外部连接

正如您所提到的,您可以使用左外部联接和右外部联接的组合来模拟两个表的完全外部联接

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

理论上,相同的技术可以扩展到两个以上的表。我建议首先使用上述方法将两个表作为一个表连接起来。然后再次使用相同的方法将视图连接到第三个表。

我不知道如何描述爱情部分,但是

具有名为a和b的表:

SELECT a.*, b.* FROM a, b

这就是诀窍吗?

很抱歉再次打扰您,因为我刚刚开始学习MySQL,但是我如何才能加入第三个表中的视图表。@jan estepa:您加入视图的方式与加入表的方式相同:使用join关键字。它不必变得混乱,但速度会变慢。上面的整个查询可以是一个视图,使用tableA->viewA,tableB->viewC,您可以得到一个干净的解决方案,这个解决方案可能会很慢(因为视图结果需要在连接之前具体化);或者拆分为六个基本组合,您就可以编写UNION所有应该使用索引扫描的内容(但现在可能有理由称之为凌乱)。@jan estepa:首先可能最好避免这种需要。找到一种更改查询的方法,以便将一个完整的外部联接改为左外部联接。这是交叉联接,FULL指的是完整的外部联接。