每个单独行的子查询

Subquery for each separate row

我得到了获取指定 user_id

的组任务的查询
select tasks.id, tasks.title, tasks.description, tasks.task, g.name
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)

我想为每一行添加额外的单元格,以指示任务是否由用户完成。我想出了这样的查询:

select count(*) done from user_task_done where task_id = 5 and user_id = 1

问题是我如何为每一行执行此查询(我还需要以某种方式从任务中获取当前 task_id)并将结果添加到名为 'done' 的 exta 列中?

您可以使用子选择。

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)

在子选择中,您也可以添加过滤器。

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

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)