2017-05-06 61 views
1

我有一个查询,查找已完成任务的人员的电子邮件,其中完成任务= 1且未完成= 0。该电子邮件位于表jos_users中,任务表名称为keyperson。 keyperson表具有标题为“check1”的用户标识和任务字段。针对mysql的特殊条件查询

问题是某些用户在keyperson表中有多个表示为多行的check1任务。所以这查询不工作,因为它没有考虑到一些用户可能有一个排,其中CHECK1 = 1,更CHECK1行,其中CHECK1 = 0

select DISTINCT(u.email) as email 
from jos_users u, keyperson k 
where k.kp1 = u.id and k.check1 = 1 

该查询就会发现大家谁也至少完成1 check1任务,但我需要找到完成所有check1任务的人。

任何帮助表示赞赏。

+0

注意,DISTINCT不是一个函数。 – Strawberry

+0

请参阅http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-询问 – Strawberry

回答

2

你可以尝试通过电子邮件分组和检查max(check) = min(check) = 1

select u.email 
from jos_users u join keyperson k on k.kp1 = u.id 
group by u.email 
having max(k.check1) = 1 and min(k.check1) = 1