Вернуть нулевые результаты, используя переменные where - PullRequest
0 голосов
/ 14 апреля 2020

Я хочу видеть значения, которые я использую в предложении where, если результаты возвращаются с нулевым значением

 select *
 from (select PartNum, PONum from db where PartNum = '12345' and PONum = 'POX123' union
       select PartNum, PONum from db where PartNum = '67890' and PONum = 'POX456' union
       select PartNum, PONum from db where PartNum = '98765' and PONum = 'POX789') d
 where PartNum is null

PartNum 98765 не находится в БД, и это то, что мне нужно вернуть обратно для сравнения где-то иначе, и это явно не работает, но я не могу понять, как вернуть пустые строки, кажется нелогичным.

1 Ответ

1 голос
/ 14 апреля 2020

Можно перечислить значения, а затем использовать not exists (или анти left join) для фильтрации по тем, которые не существуют в таблице.

В SQL Сервер:

select p.partNum
from (values (12345), (67890), (98765)) p(partNum)
where not exists (select 1 from db d where d.partNum = p.partNum)

В Oracle:

select p.partNum
from (
    select 12345 partNum from dual
    union all select 67890 from dual
    union all select 98765 from dual
) p
where not exists (select 1 from db d where d.partNum = p.partNum)

Обратите внимание, что partNum рассматривается как число, поскольку оно выглядит как число. Если он на самом деле имеет строковый тип данных, вы можете заключить значения в одинарные кавычки.

...