我正在尝试构建一个只返回未分配任务的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
行?
答案 0 :(得分:2)
我可能会误解,但在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