这个问题是一种扩展: 如何使用 MySQL 比较两个逗号分隔的字符串列表
我有一个TASKS_DONE
有 2 列user_id
和task_id
(INT) 的表。这些代码用于表示用户执行的任务。
单独的表TASKS
,USERS
用于维护任务和用户的详细信息。
我的要求是检查用户是否完成了一组任务(例如2, 3, 5
)。目前,我有这个查询:
select * from USERS u
where
(
select SUM( IF(task_id in (2, 3, 5), 1, 0) )
from TASKS_DONE td
where td.user_id=u.user_id
group by td.user_id
) = 3
计数(3
在这种情况下)将动态地提供给查询。这种方法的问题是,如果用户两次执行相同的任务,计数将包括任务的两个实例。但我只需要考虑不同的集合task_id
请帮忙。