繁体   English   中英

MySQL:仅在用户完成所有项目后才选择用户吗?

[英]MySQL: Select User Only If They Completed All Items?

我有两个表:users和missionInfo。 仅当该班级中的所有用户都完成了所有任务时,才需要选择班级。

users table:
userID  classID
1       1
2       1
3       1
4       2
5       2

missionInfo table:
userID  missionID   
1       1
1       2
1       3
2       1
2       2
2       3
3       1
3       2
3       3
4       1
5       1
5       2

因此,我应该返回classID 1,因为用户1到3都完成了所有任务1到3,并且都属于同一班级。

救命?

SELECT classID FROM (
  SELECT   classID
  FROM     users JOIN missionInfo USING (userID)
  GROUP BY classID, missionID
  HAVING   COUNT(DISTINCT userID) = (
    SELECT COUNT(*) FROM users u WHERE u.classID = users.classID
  )
) AS t
GROUP BY classID
HAVING COUNT(*) = @total_number_of_missions

sqlfiddle上看到它。

如果(userID,missionID)仅在missionInfo表中出现一次,则可以忽略DISTINCT

内部查询为该类的所有用户已完成的每个任务返回classID 外层人员将结果限制为仅完成指定任务次数的班级。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM