2010-07-29 11 views
15

¿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?

+0

Puedes votar para que se implemente esta característica [en MySql] (http://bugs.mysql.com/bug.php?id=18003&thanks=3¬ify=67) –

Respuesta

22

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.

1

Porque nunca fue implementado por los desarrolladores de MySQL. ¿Por qué? Porque no hubo suficiente presión por parte de los clientes.

+2

+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

0

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!

4

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.

1

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.

Cuestiones relacionadas