gpt4 book ai didi

MySQL:仅当用户完成所有项目时才选择用户?

转载 作者:行者123 更新时间:2023-11-29 00:46:22 24 4
gpt4 key购买 nike

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

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;外层将结果限制为仅完成指定数量任务的类(class)。

关于MySQL:仅当用户完成所有项目时才选择用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10400341/

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