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

Я видел похожие вопросы о том, что мне нужно, но не совсем ударил ногтем по голове.Допустим, у меня есть таблица.

+-----+-------+
| ID  | Value |
+-----+-------+
| 123 |     1 |
| 123 |     2 |
| 123 |     3 |
| 456 |     1 |
| 456 |     2 |
| 456 |     4 |
| 789 |     1 |
| 789 |     2 |
+-----+-------+

Я хочу вернуть DISTINCT ID, но исключить те, которые имеют определенное значение.Например, скажем, я не хочу никаких идентификаторов, которые имеют 3 в качестве значения.Мои результаты должны выглядеть следующим образом.

+-----+
| ID  | 
+-----+
| 456 |
| 789 |
+-----+

Надеюсь, это имеет смысл.Если вам нужна дополнительная информация, пожалуйста, спросите, и если ответ был дан прежде, пожалуйста, укажите мне в правильном направлении.Спасибо.

Ответы [ 4 ]

0 голосов
/ 24 сентября 2018

Вы также можете использовать EXCEPT для сравнения следующих двух наборов данных, которые дадут желаемый набор результатов

select distinct Id from ValuesTbl
except
select Id from ValuesTbl where Value = 3
0 голосов
/ 24 сентября 2018

Вы можете использовать not exists:

select distinct t.id
from table t
where not exists (select 1 from table t1 where t1.id = t.id and t1.value = 3);
0 голосов
/ 24 сентября 2018

Попробуйте это:

select id from tablename
group by id
having (case when value=3 then 1 else 0 end)=0
0 голосов
/ 24 сентября 2018

Вы можете использовать group by и having:

select id
from t
group by id
having sum(case when value = 3 then 1 else 0 end) = 0;

Предложение having подсчитывает количество «3» для каждого идентификатора.= 0 возвращает только те группы, в которых количество равно 0 (т. Е. Нет 3).

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