2011-05-23 56 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