返回满足且两个值都处于IN条件的行(Ids)

时间:2018-09-06 13:42:54

标签: sql sql-server conditional-statements where-clause where-in

我在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是唯一具有Ids both IngrdientIds

[i.e. 1,31]

1 个答案:

答案 0 :(得分: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;