gpt4 book ai didi

mysql - sql,获取聚合列表而不是循环

转载 作者:行者123 更新时间:2023-11-29 19:20:25 25 4
gpt4 key购买 nike

我有两个表:

  1. 任务列表(id,完成)
  2. 任务(id、tasklist_id、完成)

现在我想找到所有已完成设置为 0 的任务列表,以及所有已完成任务设置为 1 的任务列表,因此我也可以将任务列表设置为 1。

当我逐一浏览每个列表时,我知道该怎么做:

SELECT COUNT(done) 
FROM tasks
WHERE done != 1
AND tasklist_id = 13;

这会检查列表 13 的所有任务是否已完成,但我希望得到的结果显示上述查询的计数为 0 的所有列表。

编辑:数据库=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,因为任务编号。 2(属于列表 1)尚未完成,并且它也不应该包含 4,因为列表已设置为完成。

最佳答案

使用不存在来确保没有未完成的任务:

select id from tasklists tl where done = 0 and not exists (
select * from tasks where tasklist_id = tl.id and done = 0
)

此外,通过 Update After triggers 实现此检查可能是个好主意

关于mysql - sql,获取聚合列表而不是循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42480914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com