¿Hay alguna razón por la que MySQL no sea compatible con FULL OUTER JOINS? He intentado la sintaxis de combinación externa completa en mysql muchas veces y nunca funcionó, simplemente descubrí que no es compatible con mysql, solo curiosidad por saber por qué.¿Hay alguna razón por la cual MySQL no sea compatible con FULL OUTER JOINS?
Respuesta
MySQL carece de una gran cantidad de funcionalidades que otras bases de datos tienen *. Creo que tienen un gran retraso en la acumulación de ideas y no hay suficientes desarrolladores para implementarlas todas.
Esta característica was requested en 2006 y todavía no se implementa. Supongo que tiene baja prioridad porque puede solucionarlo combinando IZQUIERDA e DERECHA UNIÓN EXTERNA con UNIÓN TODO. No es agradable, pero funciona. Cambiar esta situación:
SELECT *
FROM table1
FULL OUTER JOIN table2
ON table1.table2_id = table2.id
a esto:
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
* Para ser justos con MySQL, también tienen algunas características que muchas otras bases de datos no tienen.
Porque nunca fue implementado por los desarrolladores de MySQL. ¿Por qué? Porque no hubo suficiente presión por parte de los clientes.
+1 Aunque dudo que haya una causalidad aquí , sin duda hay una correlación, por ejemplo Dudo que 'FULL OUTER JOIN' esté en la cima de muchas listas de deseos de MySql (para el registro, lo mejor de mí es las restricciones de 'CHECK' que en realidad están marcadas). – onedaywhen
A medida que un producto madura, se añaden más funciones a cada versión. apúntelo hasta que no se haya implementado todavía. Estoy seguro de que eventualmente estará allí, no significa que MySql sea malo ni nada, cada base de datos tiene características extra y extrañas. ¡Ojalá SQL Server tuviera la función de concatenación de grupos que tiene MySql!
No creo que los desarrolladores de MySQL alguna vez hayan expresado ninguna razón técnica por la cual podría ser difícil de implementar.
Pero MySQL, como la mayoría de los DBMS, tiene muchos lugares donde no implementa completamente el estándar ANSI. Dado que FULL OUTER JOIN es una función que rara vez se usa y, por lo general, puede ser reemplazada por una solución UNION, hay poca presión para solucionarlo.
Sugiero que agregue su voz al bug 18003.
Fuera de un sistema grande, normalmente podría usar una UNIÓN EXTERNA COMPLETA tal vez una o dos veces, por lo que no existe una gran demanda y, por supuesto, puede solucionarlo con bastante facilidad y de forma más explícita (si está infiriendo columnas derivadas basadas en resultados de izquierda/derecha) con una UNIÓN de JUNTAS IZQUIERDA y DERECHA.
- 1. ¿Hay alguna razón por la cual MicrosoftAjax.js no esté minificado?
- 2. ¿Hay alguna razón por la cual la expresión StringPiece/StringRef no sea más popular?
- 3. ¿Hay alguna razón en particular por la cual addClass() de jQuery no sea correcto?
- 4. FULL OUTER JOIN con SQLite
- 5. ¿Hay alguna buena razón por la cual la #region y la #endregion no funcionen en F #
- 6. ¿Hay alguna razón por la cual la base de datos h2 no debe usarse en producción?
- 7. ¿Hay alguna razón por la cual ciertos sitios no permiten períodos en las contraseñas?
- 8. ¿Hay alguna razón por la cual los desarrolladores de software no están externalizando la autorización?
- 9. FULL OUTER JOIN vs. FULL JOIN
- 10. ¿Hay alguna buena razón por la cual los ternarios en C# son limitados?
- 11. ¿Hay alguna buena razón por la cual las envolturas AntiXss.JavaScriptEncode resultan en comillas simples?
- 12. ¿Hay alguna buena razón por la cual el operador de asignación no es un punto de secuencia?
- 13. ¿Hay una buena razón por la cual `deleteBy` no tiene su tipo más general?
- 14. ¿Existe alguna razón por la cual fopen() no funcione después de varios cientos de aperturas?
- 15. ¿Hay alguna razón para no usar AssertionHelper con NUnit?
- 16. Hay una razón por la que cshtml no es popular
- 17. MySQL Multiple Left Joins
- 18. ¿Hay alguna razón por la que no debería comenzar con C#
- 19. Solr eliminar no trabaja por alguna razón
- 20. ¿Hay alguna razón por la cual un programador de Windows .Net necesita aprender C o C++ nunca más?
- 21. ¿Hay alguna razón para lanzar una DivideByZeroException?
- 22. ¿Hay alguna x para la cual SHA1 (x) sea igual a x?
- 23. ¿Cuál es la diferencia entre LEFT, RIGHT, INNER y OUTER JOINs?
- 24. ¿Hay alguna razón por la cual ctypes.CDLL de Python no pueda generar automáticamente restype y argtypes desde archivos de cabecera en C?
- 25. ¿Hay alguna razón para usar System.Uri?
- 26. ¿Hay alguna razón para usar esto->
- 27. ¿Hay alguna razón por la que no podamos iterar en "Rango inverso" en ruby?
- 28. ¿Hay alguna razón legítima para usar sockets de Unix sobre TCP/IP con mysql?
- 29. ¿Alguna razón para no usar XmlSerializer?
- 30. ¿Hay alguna razón para no usar los tipos de aplicación de la unidad?
Puedes votar para que se implemente esta característica [en MySql] (http://bugs.mysql.com/bug.php?id=18003&thanks=3¬ify=67) –