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

Como posso fazer um FULL OUTER JOIN no MySQL?


Você não tem junções completas no MySQL, mas você pode ter certeza emulá-los .

Para um código amostra transcrita de esta pergunta do Stack Overflow Você tem:

Com duas mesas t1, t2:
SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id

A consulta acima funciona para casos especiais em que uma junção externa completa operação não produziria nenhuma linha duplicada. A consulta acima depende do UNION set operador para remover linhas duplicadas introduzidas pelo padrão de consulta. Podemos evitar a introdução de linhas duplicadas usando um anti-join padrão para a segunda consulta e, em seguida, use um operador de conjunto UNION ALL para combinar os dois conjuntos. No caso mais geral, onde uma junção externa completa retornaria linhas duplicadas, podemos fazer isso:
SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
WHERE t1.id IS NULL