выбор идентификаторов с кодом, не равным X - PullRequest
0 голосов
/ 13 июня 2019

У меня есть список идентификаторов и список кодов. Соотношение 1: много. Один идентификатор может иметь несколько кодов. Я хочу выбрать любые идентификаторы, которые не равны 3, но я хочу выбрать идентификаторы, если они содержат 3, а также равны чему-то другому.

Например: ID: коды: А 1,2,4 Б 1,2,3 С 3

Я хочу выбрать код A, потому что он не содержит 3. Я хочу выбрать код B, потому что хотя он содержит 3, он также содержит вещи, не равные 3. Я не хочу код C, потому что он содержит только 3.

Я попытался выбрать идентификаторы, отличные от '3', но, очевидно, они исключают идентификаторы, которые я хочу, которые содержат другие коды

    select ID
    from table 
    where ID not in (
                       select ID 
                       from table
                       where code like '3'
                     )

1 Ответ

1 голос
/ 13 июня 2019

Вы хотите идентификаторы, которые не все '3', насколько я могу судить.

select distinct id
from t
where code <> '3';

Если вы хотите сохранить исходные строки:

select t.*
from t
where exists (select 1 from t t2 where t2.id = t.id and t2.code <> '3');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...