Mysql
 sql >> Base de données >  >> RDS >> Mysql

Y a-t-il une raison pour laquelle MySQL ne prend pas en charge les FULL OUTER JOINS ?

MySQL manque de nombreuses fonctionnalités que les autres bases de données ont*. Je pense qu'ils ont un carnet d'idées assez énorme et pas assez de développeurs pour toutes les mettre en œuvre.

Cette fonctionnalité a été demandée en 2006 et n'est toujours pas mis en œuvre. Je suppose qu'il a une faible priorité car vous pouvez le contourner en combinant LEFT et RIGHT OUTER JOIN avec un UNION ALL. Pas agréable, mais ça fait l'affaire. Modifiez ceci :

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

à ceci :

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

* Pour être juste envers MySQL, ils ont également des fonctionnalités que de nombreuses autres bases de données n'ont pas.