Как получить различные значения из таблицы, отсутствующей в нескольких таблицах

0

Я пытаюсь получить уникальный список значений из таблицы, которая отсутствует в соответствующих столбцах в других 2 таблицах (несколько таблиц)

Вот как выглядит мой стол:

-----------         -----------         -----------
Table1              Table2              Table3
---|-------         ---|-------         ---|-------
id | Value          id | Value          id | Value
---|-------         ---|-------         ---|-------
1  | A              1  | A              1  | A
2  | B              2  | C              2  | D
3  | C              3  | D              3  | E
4  | D              4  | G              4  | F

Теперь уникальным значением таблицы 1 является "B" (это значение отсутствует в Таблицах 2 и Таблице 3).

Подобным же уникальным значением таблицы 2 является "G". Подобным же уникальным значением таблицы 3 является "E, F".

Я использую следующий запрос:

select Value from Table1 where Table1.Value NOT IN (select Value from Table2);

Любая идея, как распространиться на 2 таблицы (или больше)?

Спасибо

Теги:
database

2 ответа

1

Вы также можете использовать левые соединения здесь:

SELECT t1.Value
FROM Table1 t1
LEFT JOIN Table2 t2
    ON t1.Value = t2.Value
LEFT JOIN Table3 t3
    ON t1.Value = t3.Value
WHERE
    t2.Value IS NULL AND t2.Value IS NULL;
1

Используйте and:

select Value
from Table1
where Table1.Value not in (select Value from Table2) and
      Table1.Value not in (select Value from Table3) ;

Я препятствую использованию NOT IN с подзапросами. Он не ведет себя так, как вы ожидали бы со значениями NULL. Если какое-либо значение в подзапросе равно NULL, все строки отфильтровываются.

Вместо этого используйте NOT EXISTS:

select t1.Value
from Table1 t1
where not exists (select 1 from table2 t2 where t2.value = t1.value) and
      not exists (select 1 from table3 t3 where t3.value = t1.value);
  • 0
    Большое спасибо, Гордон. Ценю вашу помощь и предложение. Я сделал изменения в своем коде сейчас и работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню