Я хотел бы иметь возможность легко проверить, какие уникальные идентификаторы не существуют в таблице, из тех, которые указаны в запросе.
Чтобы лучше объяснить, вот что я хотел бы сделать сейчас, чтобы проверить, какие идентификаторы списка «1, 2, 3, 4» не существуют в таблице:
SELECT * FROM dbo."TABLE" WHERE "ID" IN ('1','2','3','4')
Допустим, таблица не содержит строки с идентификатором 2.- Сбросить результаты в Excel
- Запустите VLOOKUP для исходного списка, который ищет каждое значение списка в списке результатов.
- Любой VLOOKUP, который приводит к,
#N/A
находится на значении, которое не встречается в таблице.
Я думаю, что должен быть лучший способ сделать это. Я ищу, в идеале, что-то вроде
Список для проверки -> Запрос к таблице для проверки -> Члены списка не в таблице
sql-server
sql-server-2005
except
NReilingh
источник
источник
Ответы:
Используйте
EXCEPT
:Смотрите SqlFiddle .
values
Конструктор будет работать только на SQL Server 2008 или более поздней версии. На 2005 год используйтекак подробно описано в этом так ответе .
источник
Incorrect syntax near the keyword 'values'.
когда бегуSELECT * FROM (values ('search string'),('other string')) as T(ID)
Я хотел бы создать переменную таблицы или временную таблицу, содержащую идентификаторы, которые вы ищете ... затем использовать решение Ремуса, за исключением синтаксического сахара 2008 года:
источник
Теперь я на пару лет мудрее (и имею более новый SQL Server), чем когда я задал этот вопрос, поэтому, чтобы отметить значок «Известный вопрос», который я получил за этот вопрос, вот что я хотел бы сделать сейчас. (Я не думаю, что я когда-либо использовал
EXCEPT
оператор.)Я бы сказал, что
LEFT JOIN
приведенный ниже метод более полезен, чем то, чтоEXCEPT
вы можете создавать его с другими объединениями без необходимости использования CTE.источник