我有两张桌子:
现在我想找到所有设置为0的任务列表,并将其所有任务设置为1,这样我就可以将任务列表设置为1。
当我逐一浏览每个列表时,我知道如何做到这一点:
SELECT COUNT(done)
FROM tasks
WHERE done != 1
AND tasklist_id = 13;
这将检查列表13的所有任务是否已完成,但我想以一种方式获取结果,以显示上述查询的所有列数为0的列表。
编辑:DB = mysql
示例数据:
任务列表:
id, done
1, 0
2, 0
3, 0
4, 1
任务:
id, done, tasklist_id
1, 1, 1
2, 0, 1
3, 1, 2
4, 1, 2
5, 1, 3
6, 1, 4
预期结果:
tasklist_id
2
3
它不应该包括1,因为任务nr。 2(属于列表1)尚未完成,它也应该不包括4,因为列表已经设置为完成。
答案 0 :(得分:0)
使用not exists
确保没有未完成的任务:
select id from tasklists tl where done = 0 and not exists (
select * from tasks where tasklist_id = tl.id and done = 0
)
实施此检查也许是一个好主意