这个问题比较独特的价值观是各种各样的扩展: How to compare two comma-separated string lists using MySQL在列表
我有了2列user_id
和task_id
(INT)一TASKS_DONE
表。这些代码用于表示用户执行的任务。
单独的表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
请帮忙。
“这种方法的问题是,如果用户执行过两次相同的任务,计数将包括任务的两个实例。“ – RandomSeed
@Strawberry你能评论一下吗? – th3an0maly
@YaK你是说不行,还是效率低下?它对我来说很好用 – th3an0maly