mysql - 仅当列的所有元素都在另一个表中时才匹配

标签 mysql sql phpmyadmin

我用 SQL 创建了一个小数据库,其中有 2 个表Product(NameIngredientAvailable(成分):

|     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/

相关文章:

mysql - 无法在表 PHPMyAdmin 中添加外键

mysql - PhpMyAdmin:一个表中的 MySql 字段引用另一表中的字段

mysql - 在更新查询中使用聚合时出现语法错误

php - Zend Framework 2 TableGateway fetchAll 方法返回空结果集但表包含数据

php - 如何让它从每个月的第一天开始选择

sql - 关于JOIN的一个问题

c# - 使用 Linq 获取与 ID 列表匹配的结果

authentication - PHP mysql_query() 问题

php - 使用 Laravel/Lumen DB facade 转储 sql 查询

mysql - 如何在phpmyadmin MySql中导入记事本.txt文件