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

Maneira eficiente de simular junção externa completa no MySQL?


Você pode usar um LEFT JOIN e um RIGHT JOIN:
SELECT * FROM tableA LEFT JOIN tableB ON tableA.b_id = tableB.id
UNION ALL
SELECT * FROM tableA RIGHT JOIN tableB ON tableA.b_id = tableB.id
WHERE tableA.b_id IS NULL

Há também algumas informações na Wikipedia sobre este tópico:Full outer join .

O artigo da Wikipedia sugere o uso de um UNION no MySQL. Isso é um pouco mais lento que UNION ALL, mas mais importante, nem sempre dará o resultado correto - ele removerá as linhas duplicadas da saída. Portanto, prefira usar UNION ALL em vez de UNION aqui.