Как определить, является ли запись частью NOT IN или не существует? - PullRequest
0 голосов
/ 04 августа 2020

Перефразирование исходного сообщения.

Как я могу использовать следующий или аналогичный запрос:

select * from table where name="Jack" AND ID NOT IN (1,2,3,4,5) ;

Чтобы определить разницу между:

  1. Jack запись найдена, но ее идентификатор существует в (1,2,3,4,5), поэтому ничего не было возвращено
  2. и, Jack записей не найдено, поэтому ничего не возвращено

Возможно ли это с помощью оператора IF или чего-то подобного ... или есть лучший способ сделать это?

1 Ответ

0 голосов
/ 05 августа 2020

Мое предложение: один запрос для получения статуса («совпадение», «найден Джек, но неправильный идентификатор», «не нашел Джека») и совпадение (а), если какое-либо внешнее соединение:

select s.status, t.*
from
(
  select
    case 
      when sum(name = 'Jack' and id not in (1,2,3,4,5)) then 'MATCH'
      when sum(name = 'Jack') then 'WRONG ID'
      else 'NO JACK'
    end as status
  from t
) s
left join t on t.name = 'Jack' and t.id not in (1,2,3,4,5);

Демо: https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=02733107f41bc51600a422f2911c6f6b

...