1

У меня две таблицы

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

Мне нужно объединить две таблицы и для общих столбцов я должен рассмотреть идентификатор и имя из tb2, иначе это из tb1. наряду с этим мне нужны несоответствующие записи из обеих таблиц моего запроса:

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;

это не дает мне несоответствующие записи. Как я могу добиться этого без добавления нескольких проверок на ноль?

1 ответ1

0

Использование для full outer join выглядит корректно, но выбранные термины не будут правильно обрабатывать пропущенные элементы. Использование coalesce должно помочь:

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;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .