我正在努力解决一个SQL查询,它将使我能够遵循以下场景。我们有一个多对多表,例如:
ingridient - object
糖 - 蛋糕牛奶 - 蛋糕
牛奶 - 饼干
糖 - 饼干
盐 - 菜 盐 - 蛋糕 ...我需要一个SQL查询来使我能够选择所有具有所有ingridients的对象。如果我通过糖和牛奶,我应该得到蛋糕和库克,如果我通过牛奶,糖和盐,我应该只得到蛋糕等。
答案 0 :(得分:1)
你可以这样做:
SELECT object, GROUP_CONCAT(ingridient) AS ingredients
FROM (
SELECT object, ingridient
FROM tbl
ORDER BY ingridient
) subQuery
GROUP BY object
HAVING ingredients = 'milk,salt,sugar'
但请注意,您为HAVING子句提供的成分列表必须按字母顺序排序。