我有一个用户被分配任务的表。他们可能在表中有1行或多达5行 - 没有最大值或最小值 - 它是随机的。如果用户已完成所有任务,则需要从电子邮件列表中删除其电子邮件。问题是用户可能有一个任务或2,3等。我不能编写一个在任务字段中查找其ID的简单查询,因为即使他们只完成了1个任务,它也会找到它们。因此,我需要编写一个查询,只有在完成所有任务后才能找到他们的电子邮件。
示例表:
用户ID -----任务
1 ---------- 0
2 ---------- 0
3 ---------- 1
3 ---------- 0
3 ---------- 0
4 ---------- 1
因此,正如您所看到的,用户1只有一个任务,但用户3有3个任务。
如果我使用此查询,即使用户3仍有完成任务,也会从列表中删除用户3:
SELECT userID from table_name
where task = 1
我的实际查询比这更复杂,但是我如何编写一个查找任何已完成所有任务的用户ID的查询?
我尝试了这个但是没有用:
SELECT userID from table_name
where task = 1
and task != 0
答案 0 :(得分:0)
尝试此查询:
'use strict';
angular.module('image.directives').directive('testDragEnd', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
element.on('$md.dragend', function() {
console.info('Drag Ended');
})
}
}
})
SELECT userID
FROM table_name
GROUP BY userID
HAVING SUM(CASE WHEN task = 0 THEN 1 ELSE 0 END) = 0
子句将聚合每个用户的记录,并计算未完成任务(由HAVING
表示)发生的次数。如果除了0和1之外还有其他任务代码,则可以用task=0
替换逻辑。
答案 1 :(得分:0)
检查是否有不完整的任务
SELECT tn.userID from table_name tn
where tn.task = 1
and not exists ( select 1 from table_name tn2
where tn1.userID = tn2.userID
and tn.task = 0 )