2011-05-23 32 views

回答

3

MySQL不支持FULL OUTER JOIN。

如上所述,您可以使用LEFT和RIGHT OUTER联合的组合模拟两个表的FULL 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 

同样的技术理论上可以扩展到两个以上的表。我建议先使用上述方法将view连接到两个表格。然后再次使用相同的方法将视图加入到第三个表中。

+0

不好意思再次打扰你,因为我刚开始学习MySQL,但我怎么可能加入第三个表中的视图表。 – 2011-05-23 09:55:05

+0

@jan estepa:您可以像加入表一样加入视图:使用JOIN关键字。 – 2011-05-23 10:00:44

+0

好吧,它不会变得混乱,但它会变得缓慢。整个上面的查询可以是一个VIEW,并且使用tableA - > viewA,tableB - > viewC可以得到一个干净的解决方案,这可能会很慢(因为在结合之前VIEW结果需要实现)。或者将其拆分为六个基本组合,您可以编写应该​​使用索引扫描的UNION ALL(但现在可能有理由称为杂乱)。 – Unreason 2011-05-23 10:05:23

0

我不知道该说爱情的部分是什么,但

有表名为a和b:

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

这样做的把戏?

+3

这是CROSS JOIN,FULL是指FULL OUTER。 – Unreason 2011-05-23 09:57:48