SQL“ContainsAll”查询

时间:2010-02-01 12:42:37

标签: sql mysql

我有配方表和配​​料表和表,将配料连接到配方。

我有一个成分列表,如何编写一个SELECT语句(或存储过程),它将返回包含所有给定成分的食谱?

如何为MySQL编写此查询?

3 个答案:

答案 0 :(得分:3)

我想我终于有了解决方案。 :)

SELECT *
FROM recipeTable r JOIN ingredintsTable i ON r.RecId= i.RecId
WHERE i.IngredientId IN (1,2)
GROUP BY r.id
HAVING ( COUNT(r.id) > 1 )

答案 1 :(得分:1)

SELECT  *
FROM    repice r
WHERE   EXISTS
        (
        SELECT  NULL
        FROM    ingredients i
        WHERE   i.recipe_id = r.id
                AND i.ingredient_id IN (1, 2, 3, 4)
        LIMIT 1 OFFSET 3
        )

OFFSET参数应该等于n - 1,其中n是列表中的成分数。

这假定(recipe_id, ingredient_id)组合是唯一的。

答案 2 :(得分:1)

你没有在HAVING子句中声明'd'。我假设你打算把'r'放在那里。