我正在尝试构造一个仅返回未分配任务的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/

10-13 00:50