selecionando registros não correspondentes da junção externa completa

1

Eu tenho duas tabelas

tb1 
-------
1,ali
2,ana
3,kim
6,git
8,sen
9,pam

tb2
-------
2,joy
3,fin
4,roy
5,dina
9,tim

output
-------
1,ali
2,joy
3,fin
4,roy
5,dina
6,git
8,sen
9,tim

Eu preciso juntar duas tabelas e para colunas comuns eu deveria considerar id e nome de tb2 senão é de tb1. junto com isso eu preciso de registros não correspondentes de ambas as tabelas minha consulta:

select case when tb1.id=tb2.id then tb2.id else tb1.id end as id , case when tb1.id=tb2.id then tb2.name else tb1.name end as name  
  from tb1 full outer join tb2
  on tb1.id=tb2.id;

não está me dando os registros não correspondentes. Como posso conseguir isso sem adicionar várias verificações para null?

    
por user 05.06.2018 / 00:23

1 resposta

0

O uso de full outer join parece correto, mas os termos selecionados não lidam corretamente com itens ausentes. Usar coalesce deve fazer o truque:

SELECT          COALESCE (tb2.id, tb1.id) AS id, COALESCE (tb2.name, tb1.name) AS name
FROM            tb1
FULL OUTER JOIN tb2 ON tb1.id = tb2.id;
    
por 09.06.2018 / 20:01

Tags