SQL: вернуть «true», если список записей существует?
Альтернативный заголовок может быть: Проверить наличие нескольких строк?
Используя комбинацию SQL и C #, я хочу, чтобы метод возвращал значение true, если все продукты в списке существуют в таблице. Если это можно сделать все на SQL, это было бы предпочтительнее. Я написал метод, который возвращает ли одинproductID
существует с использованием следующего SQL:
SELECT productID FROM Products WHERE ProductID = @productID
Если это возвращает строку, то метод c # возвращает true, иначе false.
Теперь мне интересно, есть ли у меня список идентификаторов продуктов (не большой список, как правило, младше 20). Как я могу написать запрос, который будет возвращать строку, если все идентификаторы продукта существуют, и нет строки, если один или несколько идентификаторов продукта не существует?
(Maybe something involving "IN" like:
SELECT * FROM Products WHERE ProductID IN ('1', '10', '100', 'ABC'))
РЕДАКТИРОВАТЬ:
Как выражается результат, мне не важно. Возвращает ли запрос1
или же0
пустой набор результатов или непустой, истина или ложь не имеет значения. Я бы предпочел ответ: 1) легко читаемый и понятный и 2) эффективный
Я предполагал объединить список идентификаторов продуктов с SQL. Очевидно, что это открывает код до внедрения SQL (идентификаторы продукта на самом делеvarchar
, в этом случае шанс невелик, но все же хочется избежать этой возможности). Так что, если есть способ обойти это, было бы лучше. Использование SQL Server 2005.
Идентификаторы продуктаvarchar