SQL-запрос для определения записей, пропускающих значение из массива - PullRequest
1 голос
/ 07 июня 2019

У меня есть таблица, в ней есть поля: ID, Программа

Пример таблицы:

ID    Program
-----------------
1  office
1  internet explorer
1  Antivirus
2  office
2  internet explorer
2  messenger
2  bitcoin
3  office
3  internet explorer
3  Antivirus

Мне нужно знать, как создать запрос для получения идентификаторов, которые несодержит строку программного значения Antivirus.Таким образом, запрос к примеру должен вернуть ID 2

Это для сервера MS SQL.Я предполагаю, что хочу выполнить какой-то цикл поиска для каждого идентификатора.

1 Ответ

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

В одну сторону NOT IN.

select distinct id
from example
where id not in (select id from example where program = 'antivirus')

Другой это NOT EXISTS

select distinct e1.id
from example e1
where not exists (select 1 from example e2 where e2.program = 'antivirus' and e2.id = e1.id )

Кроме того, комментарий о зацикливании в SQL Server. Вообще говоря, вы хотите избежать петли любой ценой. SQL Server лучше всего работает в наборах, и любой цикл или итеративный процесс не будет хорошо работать в SQL Server.

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