返回满足并且具有IN条件中的值的行(Ids)

问题描述 投票:1回答:1

我有一个低于table的样本数据称为Recipes,充当其他junction table之间的2 tables

查询 -

select recipeId, IngredientId  from Recipes where IngredientId in (1,31) order by recipeId

当我execute高于SQL声明时,它给出了Output.以下,这很好。

enter image description here

我必须在查询中进行哪些更改才能获得突出显示的Output

enter image description here

现在为什么6721

作为RecipeIds 6721是唯一的Idsboth IngrdientIds [i.e. 1,31]

sql sql-server conditional-statements where-clause where-in
1个回答
3
投票

你可以使用group by子句:

select RecipeIds 
from table t
where IngrdientIds in (1, 31)
group by RecipeIds 
having count(distinct IngrdientIds) = 2;

你也可以使用min()max()函数:

having min(IngrdientIds) = 1 and max(IngrdientIds) = 31;
© www.soinside.com 2019 - 2024. All rights reserved.