2010-07-29 18 views
15

Gibt es einen Grund, warum MySQL FULL OUTER JOINS nicht unterstützt? Ich habe versucht, die vollständige Outer-Join-Syntax in MySQL mehrmals und es hat nie funktioniert, nur herausgefunden, dass es nicht von MySQL unterstützt wird, also nur neugierig, warum?Gibt es einen Grund, warum MySQL FULL OUTER JOINS nicht unterstützt?

+0

Sie können abstimmen, dass diese Funktion implementiert wird [at MySql] (http://bugs.mysql.com/bug.php?id=18003&thanks=3¬ify=67) –

Antwort

22

MySQL fehlt eine Menge Funktionalität, die andere Datenbanken haben *. Ich denke, sie haben einen ziemlich großen Rückstau an Ideen und nicht genügend Entwickler, um sie alle umzusetzen.

Diese Funktion was requested in 2006 und ist noch nicht implementiert. Ich schätze, es hat eine niedrige Priorität, weil Sie es umgehen können, indem Sie LINKE und RECHTE OUTER-VERBINDUNG mit einer UNION ALL kombinieren. Nicht angenehm, aber es macht den Trick. Ändern Sie dies:

SELECT * 
FROM table1 
FULL OUTER JOIN table2 
ON table1.table2_id = table2.id 

dazu:

SELECT * 
FROM table1 
LEFT JOIN table2 
ON table1.table2_id = table2.id 
UNION ALL 
SELECT * 
FROM table1 
RIGHT JOIN table2 
ON table1.table2_id = table2.id 
WHERE table1.table2_id IS NULL 

* Um fair zu sein, MySQL, sie auch einige Funktionen, die viele andere Datenbanken nicht haben.

1

Weil es nie von MySQL-Entwicklern implementiert wurde. Warum? Weil der Druck seitens der Kunden zu gering war.

+2

+1 Während ich bezweifle, dass es hier Kausalität gibt zweifellos gibt es Korrelation z Ich bezweifle, dass "FULL OUTER JOIN" an der Spitze vieler MySql-Wunschlisten steht (für die Aufzeichnung sind meine "CHECK" -Einschränkungen, die tatsächlich überprüft werden, ganz oben). – onedaywhen

0

Wenn ein Produkt reift, werden mit jeder Version weitere Funktionen hinzugefügt. Beschreibe dies einfach damit, dass es noch nicht implementiert ist. Ich bin sicher, dass es irgendwann da sein wird, es bedeutet nicht, dass MySql schlecht ist oder irgendetwas, jede Datenbank hat zusätzliche und fehlende Funktionen. Ich wünschte, dass SQL Server die Gruppenkettenfunktion hatte, die MySql hat!

4

Ich glaube nicht, dass die MySQL-Entwickler jemals einen technischen Grund angegeben haben, warum es schwierig sein könnte, sie zu implementieren.

Aber MySQL hat, wie die meisten DBMS, viele Stellen, an denen es den ANSI-Standard nicht vollständig implementiert. Da FULL OUTER JOIN nur selten verwendet wird und in der Regel durch eine UNION-Problemumgehung ersetzt werden kann, gibt es nur wenig Druck, um es zu beheben.

Ich empfehle Ihnen, Ihre Stimme zu bug 18003 hinzuzufügen.

1

Aus einem großen System könnte ich normalerweise einen FULL OUTER JOIN vielleicht ein oder zwei Mal verwenden, also gibt es keine große Nachfrage dafür und natürlich kann man es ziemlich leicht und möglicherweise expliziter lesbar umgehen (wenn Sie leiten abgeleitete Spalten basierend auf den Links/Rechts-Ergebnissen ab) mit einer UNION von LINKEN und RECHTEN VERBINDUNGEN.

Verwandte Themen