Выбор строк для определенного идентификатора, где столбцы, соответствующие этому, имеют только упомянутый набор значений - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть следующая таблица:

ID  | Value  | Other Columns...........| .......
-----------------------------------------------
ID1 | Value1 | ....................... | .......
ID1 | Value2 | ....................... | .......
ID2 | Value3 | ....................... | .......
ID3 | Value4 | ....................... | .......
ID3 | Value4 | ....................... | .......
ID3 | Value5 | ....................... | .......
ID4 | Value4 | ....................... | .......
ID4 | Value5 | ....................... | .......
ID5 | Value2 | ....................... | .......
ID5 | Value4 | ....................... | .......
ID5 | Value5 | ....................... | .......

Столбец «Значение» может иметь 5 типов значений: «Значение от 1 до Значение5».Мне нужно написать запрос, где я должен получить все идентификаторы, где значения только значение4 и значение5 .Пример: ID3 и ID4 .Как я новичок в SQL, как мне оптимизировать этот процесс?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Просто я даю вам приблизительное представление о запросе.

Select * from table where value is value or value 4
0 голосов
/ 01 декабря 2018

Вы можете использовать group by и having.Простой способ:

select id
from t
group by id
having sum(case when value = 'value4' then 1 else 0 end) > 0 and
       sum(case when value = 'value5' then 1 else 0 end) > 0 and
       sum(case when value not in ('value4', 'value5') then 1 else 0 end) = 0;

Условия подсчитывают, сколько раз value является каждым из значений для данного id.> 0 говорит, что по крайней мере одна строка имеет значение.= 0 говорит, что ни одна строка с id не имеет значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...