mysql - SQL - 获取列表中所有列在另一列中具有相同值的行
问题描述
我有一个数据库如下:
drinks_id ingredients_master_id
1 2
1 3
1 4
2 2
2 4
3 5
我正在寻找一个查询,我可以在其中给它一个如 2,4 的成分_master_id 的列表,它会返回所有恰好有 2,4 的drinks_id。
所以在这种情况下,如果我给它的 ingredients_master_id 2,4,5 它会返回drinks_id 2 和3。如果我给它5 它会返回drinks_id 3。
这是我到目前为止所拥有的,但它目前没有显示正确的信息。
SELECT DISTINCT drinks.id
FROM drinks
WHERE drinks.id NOT IN
(
SELECT drinks.id
FROM ingredients
JOIN drinks ON ingredients.drinks_id = drinks.id
WHERE ingredients.ingredients_master_id NOT IN
(
2,3,4,5,6
)
);
解决方案
您可能会使用以下方法获得所需的结果not exists
:
Select t.*
From your_table t
Where t.ingredients_master_id in (2,4,5)
And not exists
(Select 1 from your_table tt
Where tt.drinks_id = t.drinks_id
And tt.ingredients_master_id not in (2,4,5))
推荐阅读
- javascript - 不能使用 React Beautiful DND 给函数组件提供 refs
- git - Git - 合并到另一个分支后可以安全删除分支吗?
- c - HAS_SUBNORM 为 0:“次正常结果”是在舍入前还是舍入后确定?
- ios - 为什么我需要物理设备来发布 ios 应用程序?
- python - 如何将图像 url 转换为 ImageField - Django
- mysql - 通过 eks 中的 nginx 入口访问 MySQL 端点时出错
- javascript - 如何在固定画布中绘制缩放图像并在其中心旋转它?
- reactjs - 我应该如何使用 svg 元素构建树结构?
- transactions - 如何跨客户端-服务器 RabbitMQ 服务传播事务?
- mysql - 如何从每列中删除重复项并仍将所有数据保留在 mysql 中?它可能吗?请帮忙