Mysql 每个单独行的子查询

Mysql 每个单独行的子查询,mysql,sql,join,subquery,Mysql,Sql,Join,Subquery,我得到了一个查询,该查询获取指定用户id的组任务 选择tasks.id、tasks.title、tasks.description、tasks.task、g.name 来自任务 在tasks.id=gt.task\u id上加入组\u task gt 在g.id=gt.group\u id上加入'groups`g,其中gt.group\u id在从用户组中选择g.id 在g.id=user\u group.group\u id上加入`groups`g,其中user\u group.user\u

我得到了一个查询,该查询获取指定用户id的组任务

选择tasks.id、tasks.title、tasks.description、tasks.task、g.name 来自任务 在tasks.id=gt.task\u id上加入组\u task gt 在g.id=gt.group\u id上加入'groups`g,其中gt.group\u id在从用户组中选择g.id 在g.id=user\u group.group\u id上加入`groups`g,其中user\u group.user\u id=1 我想为每一行添加额外的单元格,这将表明任务是否由用户完成。我提出了这样的疑问:

从用户任务中选择计数*完成,其中任务id=5,用户id=1
问题是如何对每一行执行此查询。我还需要以某种方式从任务中获取当前任务id,并将结果添加到名为“完成”的exta列中。

您可以使用subselect

select count(*) as done 
from user_task_done 
where 
1=1
and task_id in (select task_id from from task) 
and user_id in (select user_id from from users where user_id > 5)

在子选择中,您还可以添加筛选器。

您可以从子查询中添加单个字段,只要它只返回一列和一行

select tasks.id, tasks.title, tasks.description, tasks.task, g.name, (select count(*) from user_task_done where task_id = tasks.id and user_id = 1) done
from tasks
    join group_task gt on tasks.id = gt.task_id
    join `groups` g on g.id = gt.group_id where gt.group_id in (select g.id from user_group
    join `groups` g on g.id = user_group.group_id where user_group.user_id = 1)

样本数据和预期输出将有所帮助。我认为您的查询可以简化。我建议用样本数据和期望的结果问一个新问题。