我正在尝试构造一个仅返回未分配任务的MySQL查询。当一个任务具有一个或多个assignments
,其中is_assignee
等于y
时,则视为已分配任务。
tasks
- id
- name
- description
assignments
- task_id
- user_id
- is_assignee
- is_owner
我犯了一个错误,那就是以前发现根本没有相关的
assignments
行的任务:SELECT t.*
FROM tasks t
LEFT OUTER JOIN assignments a
ON t.id = a.task_id
WHERE a.id is NULL
效果很好,但只返回了没有所有者和受让人的任务。我需要返回的任务没有相关的
assignments
行,而is_assignee
设置为'y'。是否有一种有效的方法仅返回我要查找的未分配的task
行? 最佳答案
我可能会误会,但是在您的JOIN
子句中添加了其他逻辑以仅过滤is_assignee = 'y'
应该执行的位置。
SELECT t.*
FROM tasks t
LEFT OUTER JOIN assignments a
ON t.id = a.task_id AND a.is_assignee = 'y'
WHERE a.id is NULL
关于mysql - MySQL:仅返回缺少特定条件的结果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7180109/