Получить данные из 2 таблиц, если они отсутствуют во 2-й таблице или имеют нулевое значение - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь получить данные из 2 таблиц - table_a и table_b. Столбцы table_a - a1, a2, a3 Столбцы table_b - b1, b2, b3

Теперь отображение внешнего ключа - это a1 и b2.

Все значения в table_a могут отсутствовать в table_b , И значения в table_b могут иметь значение в столбце b3 как нулевое время от времени.

Я пытаюсь получить все данные, которые либо присутствуют в table_a, а не в table_b, и значения, которые присутствуют в обоих таблицы, но значение столбца n b3 равно нулю в table_b. Не могли бы вы помочь мне с SQL запросом для того же?

В настоящее время я использую ниже -

select * 
from table_a left join 
     table_b 
     on (a1 = b2 and (b3 is null or b1 is null));

1 Ответ

1 голос
/ 13 января 2020

Я пытаюсь извлечь все данные, которые либо присутствуют в table_a, а не в table_b, и значения, присутствующие в обеих таблицах, но значение columnn b3 равно нулю в table_b

Рассмотрим:

select * 
from table_a a
left join table_b b on b.b2 = a.a1
where b.b3 is null

Обоснование: условие left join вместе с were b.b3 is null охватывает следующие ситуации

  • в * нет соответствия 1014 * (тогда b.b3 заканчивается null)
  • в table_b есть совпадение, но b3 равно null в соответствующей записи
  • , если есть совпадение
...