Возвращает True или False (1 или 0), проверяя, существуют ли все значения или нет значений в массиве - PullRequest
0 голосов
/ 27 июня 2019

Цель: вернуть true или false из запроса, который принимает список.Если элемент в списке не существует, то я хочу вернуть false.Если они все существуют, я хочу вернуть true.

То, что у меня есть (вариант):

SELECT DISTINCT id, sku
FROM items as items
WHERE items.sku IN ('a','b','c','doesntexist');

Любое руководство было бы замечательно.Это для MSSQL.

Ответы [ 4 ]

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

Вы можете использовать количество переменных / элементов в вашем списке и просто сравнить их с таблицей элементов.

if (select count(distinct sku) from items where sku IN ('a','b','c','doesntexist')) = 4
select 'True'
else
select 'False'
1 голос
/ 27 июня 2019

Если у вас есть список apriori, вы можете указать количество различных элементов, которые соответствуют ему, а затем использовать case против него:

SELECT   id, CASE COUNT(DISTINCT sku) WHEN 4 THEN 1 ELSE 0 END AS all_exists
FROM     items 
WHERE    sku IN ('a', 'b', 'c', 'doesntexist') -- 4 items in the IN list:
GROUP BY id
0 голосов
/ 27 июня 2019
select IIF(count(*) = 4, 'true', 'false') from items where item in ('a','b','c','doesntexist');
0 голосов
/ 27 июня 2019

Вы можете использовать функцию String-Split в вашем массиве элементов, чтобы затем выполнить запрос OUTER JOIN или EXISTS (), чтобы увидеть, есть ли какие-либо члены таблицы, возвращаемые String-Split, которые неесть соответствующий элемент в вашей таблице.

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