2010-08-10 15 views
5

Google arama göre: MySQL tam dış birleştirme desteklemediği için, sendika ve/veya sendika aracılığıyla simüle edilebilir. Ancak her ikisi de gerçek kopyaları kaldırır veya sahte kopyaları gösterir.MySQL'de tam dış birleştirmeyi simüle etmenin etkili yolu?

Doğru ve verimli bir şekilde ne olurdu?

Bu question ilgili görünüyor ama cevabını alamadım. Bir SOL kullanabilirsiniz

+2

bu bağlantıya bakın: http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/ –

cevap

8

JOIN ve 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 

da bu konu hakkında Vikipedi'de bazı bilgiler vardır: Full outer join.

Wikipedia makalesinde, MySQL'de bir UNION kullanılmasının önerilmektedir. Bu, UNION ALL'dan biraz daha yavaştır, ancak daha önemlisi her zaman doğru sonucu vermez - çıktıdaki yinelenen satırları kaldıracaktır. Bu yüzden burada UNION ALL UNION ALL kullanmayı tercih edin.

+1

Bu, @ ile belirtilen çözümdür. haim evgi (sayfa linki). Teşekkürler. – understack

+2

Bu cevabı N tabloları için nasıl ölçeklendirirsiniz? Demek ki, dört tabanda ve daha sonra FULL OUTER JOIN'e nasıl benzeyeceksin? – Gili

İlgili konular