我在SQL中制作了一个小数据库,作为2个表Product
(Name
,Ingredient
和Available
(Ingredient
):
| 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
来过滤至少缺少一个Products
的Ingredient
:
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/