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?
Antwort
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.
Weil es nie von MySQL-Entwicklern implementiert wurde. Warum? Weil der Druck seitens der Kunden zu gering war.
+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
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!
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.
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.
- 1. Warum meldet MySQL bei FULL OUTER JOIN einen Syntaxfehler?
- 2. FULL OUTER JOIN vs. FULL JOIN
- 3. OUTER APPLY wird von MySQL nicht unterstützt
- 4. FULL OUTER JOIN mit SQLite
- 5. Gibt es einen Grund, dass C99 keine Funktionsüberlastung unterstützt?
- 6. Gibt es einen Grund, warum MicrosoftAjax.js nicht minimiert wird?
- 7. Gibt es einen Grund, warum JavaScript-Entwickler Array.push() nicht verwenden?
- 8. Gibt es einen technischen/konzeptionellen Grund, warum iOS Cocoa Bindings nicht unterstützt?
- 9. Hilf mir mit diesem MySql Full Outer Join (oder Union)
- 10. Welche Joins unterstützt SQLite?
- 11. Bedingungen auf Outer-Joins
- 12. Multiple Outer Joins Semantik
- 13. SQL: FULL OUTER JOIN auf Nullspalten
- 14. Outer-Joins statistichen in django
- 15. Outer Joins mit Subsonic 3.0
- 16. Warum gibt Full Outer Join in HIVE seltsames Ergebnis, wenn eines der Join-Felder fehlt?
- 17. Gibt es einen Grund, warum bestimmte Websites keine Passwörter zulassen?
- 18. Gibt es einen Grund, warum es nicht std :: identity in der Standardbibliothek gibt?
- 19. Wer benutzt Right Outer Joins?
- 20. Gibt es einen Grund, System.Uri zu verwenden?
- 21. Gibt es einen Grund, PHP's exec() nicht zu benutzen?
- 22. Wählen Sie Nicht-Null-Spalte in FULL OUTER JOIN
- 23. Gibt es einen Grund, nicht <=> (null Safe gleich Operator) in mysql statt =?
- 24. Gibt es einen Grund, warum ich einen CALayer nicht außerhalb einer UIView-Klasse initialisieren kann?
- 25. Gibt es einen Grund, warum jQuery.each nicht auf Array.forEach angewiesen ist, wenn es verfügbar ist?
- 26. Gibt es einen Grund, `new object(). Foo()` nicht zu verwenden?
- 27. Gibt es einen Grund, threading.Lock über Multiprocessing.Lock zu verwenden?
- 28. Wie bekomme ich einen LINKEN JOIN oder einen FULL OUTER JOIN?
- 29. ActiveRecord MySQL und JOINS
- 30. Warum unterstützt LINQ nicht nihternate einfache Outer-Joins (eine where-Klausel in der äußeren Join-Tabelle vorausgesetzt)?
Sie können abstimmen, dass diese Funktion implementiert wird [at MySql] (http://bugs.mysql.com/bug.php?id=18003&thanks=3¬ify=67) –