我正在尝试构造一个MySQL查询,其结果基于给定的成分。
如果说我提供龙舌兰酒,橘子汁和石榴汁糖浆,我希望结果仅是龙舌兰酒日出。并非其中任何一种都含有成分。
我当前的查询是:
SELECT *
FROM drink
INNER JOIN mix
ON drink.id = mix.drinkid
WHERE Ing IN ('Tequila', 'Apelsinjuice', 'Grenadine')
我将非常感谢您的帮助!
先感谢您!
最佳答案
这是“集内查询”查询的示例。我更喜欢使用聚合和having
子句来执行此操作,因为这是最灵活的方法:
SELECT d.*
FROM drink INNER JOIN mix
ON drink.id = mix.drinkid
group by drink.id
having sum(Ing = 'Tequila') > 0 and
sum(Ing = 'Apelsinjuice') > 0 and
sum(Ing = 'Grenadine') > 0
sum()
子句中的每个having
都在计算具有给定成分的行数。 > 0
确保成分存在。 and
坚持所有三种成分都在配方中。