我有一个简单的表结构,但是很难找出合适的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/