如何从表中获取行

时间:2014-09-04 17:50:31

标签: sql

我有表recipes2ingredients

(id, recipe_id, ingredient_id)  

和2种成分,例如1,2。我需要得到所有recipe_id

where  is ingredient_id = 1 and ingredient_id = 2 

2 个答案:

答案 0 :(得分:1)

假设它将在DB服务器上使用;你可以使用。

select distinct r2i1.recipe_id from recipes2ingredients r2i1
join recipes2ingredients r2i2
on r2i1.recipe_id = r2i2.recipe_id
where r2i1.ingredient_id = 1
and r2i2.ingredient_id = 2;

答案 1 :(得分:0)

使用拥有和计数以及在哪里可以找到具有这两种成分的所有食谱。

SELECT recipe_ID, count(Distinct ingredient_id)
FROM recipes2ingredients
WHERE ingredient_ID in (1,2)
GROUP BY recipe_id
HAVING count(Distinct ingredient_id) = 2

使用了一个独特的计数,所以如果一个成分被列出不止一次,我们就不会得到误报。

where子句仅限于那些具有一种或多种成分和having子句的食谱,确保我们只有2

这种方法的优点是允许where子句和having count都是在运行时提供的变量,而不必更改查询结构。