我正在尝试构造一个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坚持所有三种成分都在配方中。

09-09 20:29