mysql - 如何检索依赖于同一表中其他行的所有行?
问题描述
所以我有这个表方案
|id| item_id | dependency_item_id | completed |
这个想法是让这个表中的行通过dependency_item_id -> item_id指向同一个表中的其他行。
我想要的是检索所有具有dependency_item_id
值为NULL
和completed
值为 0 的记录
和
所有具有其父行的记录,该行是具有item_id = dependency_item_id
, 状态completed = 1
及其状态的行completed = 0
例子:
These are the records in the database.
|id|task_id|dependency_item_id|completed|
|1 |1 |null |1 |
|2 |2 |null |0 |
|3 |3 |1 |0 |
|4 |4 |2 |0 |
|5 |5 |2 |0 |
With the query we should get only the second record
|id|task_id|dependency_item_id|completed|
|2 |2 |null |0 |
|3 |3 |1 |0 |
到目前为止,我的查询如下:
SELECT process.*
FROM tasks AS tasks
JOIN tasks AS dep ON dep.dependency_item_id = process.task_id
WHERE (dep.completed = 1 and tasks.completed = 0) OR tasks.dependency_item_id IS NULL
解决方案
我不得不调整您给我的查询以满足我的需要,因为使用给定的查询我无法检索具有空依赖项的记录。我的最终结果如下:
SELECT dep.*
FROM tasks AS task
LEFT JOIN tasks AS dep ON dep.dependency_item_id = task.item_id
WHERE (task.completed = 1 and dep.completed = 0)
UNION
SELECT * FROM tasks WHERE dependency_item_id IS NULL AND completed = 0
推荐阅读
- sql - 仅聚合顺序值
- visual-studio - 添加 Visual Studio Devops 工作项中缺少的新分支
- java - 动态注入 JDK 动态代理作为 spring bean - 但前提是没有其他实现可用
- embedded - STM32F401 Nucleo板可以和以太网板集成吗?
- c# - EF 核心获取额外的表条目作为一个 json 列
- scala - 调用普通 https url 10 亿次的有效方法
- uwp - UWP 按钮的边框动画
- ios - 重命名 React Native 项目
- response - 无法使用 HTTP 响应
- angular - Nodeshift - 无法验证第一个证书