我有一个简单的表结构,但是很难找出合适的SQL查询。

表结构:

Recipe        { id (pk), name, description, ... }
Ingredient    { recipe_id (fk), ingredient }


我试图弄清楚SQL的含义。“给出配料列表,返回至少包含所有指定配料的配方”

(另一种说法:指定的成分是匹配的配方成分的超集)

编辑:是否可以做SELECT r.* FROM Recipe r而不是从成分表?

最佳答案

您可以使用group by和聚合进行此操作。一种方法是:

select i.recipe_id
from ingredients i
where i.ingredient in (<ingredient 1>, <ingredient 2>, . . .)
group by i.recipe_id
having count(distinct i.ingredient) = <number of ingredients you are looking for>;

关于mysql - 指定列表的SQL超集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41948583/

10-16 15:22