查找包含 ID SQL 服务器的所有逗号分隔列表的记录

To find records which are contains all comma-separated list of Id's SQL Server

它有 2 个这样的表:

t_recipe:

RecipeId        Name              InsertDate 
----------------------------------------------
1             Mutton            9/6/2015 0:00
2             Veg Biryani       9/5/2015 0:00

t_recipe_ingredient:

RecipeId      IngrId          InsertDate
----------------------------------------------
1             200               9/6/2015 0:00
1             201               9/5/2015 0:00
1             101               9/4/2015 0:00
1             103               9/3/2015 0:00
2             100               9/2/2015 0:00
2             500               9/6/2015 0:00
2             202               9/5/2015 0:00
2             200               9/4/2015 0:00

现在,当我使用以下查询时:

select *
from t_recipe r
    join t_recipe_ingredient i ON r.RecipeID = i.RecipeId
where i.IngrId in (200, 201)

我在输出中得到了两种食谱,但它应该只给我羊肉,因为它包含两种成分。似乎我的查询正在检查至少一个匹配项,但是我希望它应该 return 只有那些包含子句中所有成分的食谱。

您需要按照您的食谱分组,并且只选择具有两种种成分的组

select r.RecipeId, r.Name, r.InsertDate  
from t_recipe r 
join t_recipe_ingredient i ON r.RecipeID = i.RecipeId 
where i.IngrId in (200,201)
group by r.RecipeId, r.Name, r.InsertDate
having count(distinct i.IngrId) = 2