gpt4 book ai didi

mysql - 当需要考虑多个条件时,如何编写查询?

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

我有一个为用户分配任务的表。表中可能有 1 行或多达 5 行 - 没有最大值或最小值 - 它是随机的。如果用户已完成所有任务,则需要从电子邮件列表中删除其电子邮件。问题是用户可能有一项任务或 2、3 项任务等。我无法编写一个简单的查询来在任务字段中查找他们的 ID,因为即使他们只完成了 1 项任务,它也会找到它们。因此,我需要编写一个查询,仅在所有任务完成后才找到他们的电子邮件。

示例表:

用户ID-----任务
1----------0

2----------0

3----------1

3----------0

3----------0

4----------1

因此,如您所见,用户 1 只有一项任务,但用户 3 有 3 项任务。

如果我使用此查询,用户 3 将从列表中删除,即使他仍有任务需要完成:

SELECT userID from table_name
where task = 1

我的实际查询比这更复杂,但是我如何编写一个查询来查找已完成所有任务的任何 userID?

我尝试过但没有成功:

SELECT userID from table_name
where task = 1
and task != 0

最佳答案

尝试这个查询:

SELECT userID
FROM table_name
GROUP BY userID
HAVING SUM(CASE WHEN task = 0 THEN 1 ELSE 0 END) = 0

HAVING子句将聚合每个用户的记录并计算未完成任务(由 task=0 表示)发生的次数。您可以将逻辑替换为 task <> 1除了0和1之外是否还有其他任务代码。

关于mysql - 当需要考虑多个条件时,如何编写查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43819578/

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