目标:从采用列表的查询中返回true或false。如果列表中的项目不存在,那么我想返回false。如果它们都存在,我想返回true。
我所拥有的(一种):
SELECT DISTINCT id, sku
FROM items as items
WHERE items.sku IN ('a','b','c','doesntexist');
任何指导都会很棒。这是针对MSSQL的。
答案 0 :(得分:1)
如果您具有列表先验列表,则可以对与其进行匹配的不同项目数,然后对其使用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
答案 1 :(得分:1)
您可以使用列表中变量/项目数的计数,只需对照您的项目表进行检查即可。
if (select count(distinct sku) from items where sku IN ('a','b','c','doesntexist')) = 4
select 'True'
else
select 'False'
答案 2 :(得分:0)
您可以在项目数组上使用String-Split函数,以便随后可以进行OUTER JOIN或EXISTS()查询,以查看是否有String-Split返回的表中的任何成员没有表格中有一个匹配项。
答案 3 :(得分:0)
select IIF(count(*) = 4, 'true', 'false') from items where item in ('a','b','c','doesntexist');