我在SQL中制作了一个小数据库,作为2个表ProductNameIngredientAvailableIngredient):

|     Product         | Available  |
|  Name  | Ingredient | Ingredient |
|   1    |      a     |      a     |
|   1    |      b     |      c     |
|   2    |      a     |
|   2    |      c     |


仅当产品的所有成分都在Available表中时,我才需要产品的名称。
对于前面的示例,结果应为:Product“ 2”
而不是Product“ 1”,因为Available表中没有成分“ b”。

谢谢您的帮助

最佳答案

您可以尝试使用left join(找出哪些Products没有必要的Ingredients)和group by + having来过滤至少缺少一个ProductsIngredient

select p.Name
from Products p
left join Available a on a.Ingredient = p.Ingredient
group by p.Name
having sum(a.Ingredient is null) = 0

关于mysql - 仅当列的所有元素都在另一个表中时才匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53780303/

10-11 03:32