Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Existe uma razão pela qual o MySQL não suporta FULL OUTER JOINS?


O MySQL carece de muitas funcionalidades que outros bancos de dados possuem*. Eu acho que eles têm um grande acúmulo de ideias e não há desenvolvedores suficientes para implementá-las todas.

Este recurso foi solicitado em 2006 e ainda não foi implementado. Eu acho que tem baixa prioridade porque você pode contornar isso combinando LEFT e RIGHT OUTER JOIN com UNION ALL. Não é agradável, mas faz o truque. Mude isso:
SELECT *
FROM table1
FULL OUTER JOIN table2
ON table1.table2_id = table2.id

para isso:
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 justo com o MySQL, eles também possuem alguns recursos que muitos outros bancos de dados não possuem.