我用 SQL 创建了一个小数据库,其中有 2 个表Product
(Name
、Ingredient
和 Available
(成分
):
| Product | Available |
| Name | Ingredient | Ingredient |
| 1 | a | a |
| 1 | b | c |
| 2 | a |
| 2 | c |
只有当产品的所有成分都在 Available
表中时,我才需要产品的名称。
对于前面的示例,结果应为:Product
"2"
而不是Product
“1”,因为我在Available
表中没有成分“b”。
感谢您的帮助
最佳答案
您可以尝试使用左连接
(找出哪些产品
没有必要的成分
)和分组依据
+ having
过滤至少缺少一种成分
的产品
:
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/