Mysql
 sql >> Database >  >> RDS >> Mysql

C'è un motivo per cui MySQL non supporta FULL OUTER JOINS?

MySQL manca di molte funzionalità che hanno altri database*. Penso che abbiano un enorme arretrato di idee e non abbastanza sviluppatori per implementarle tutte.

Questa funzione è stata richiesta nel 2006 e non è ancora implementato. Immagino che abbia una priorità bassa perché puoi aggirarlo combinando LEFT e RIGHT OUTER JOIN con UNION ALL. Non è piacevole, ma fa il trucco. Cambia questo:

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

a questo:

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

* Per essere onesti con MySQL, hanno anche alcune funzionalità che molti altri database non hanno.