MySQL count()未返回正确的数字

MySQL count()未返回正确的数字,mysql,Mysql,这就是我正在尝试的问题 select UserId, count(e.UserId) as 'Experiments', count(t.TaskId) as 'Tasks tried', count(case when t.TaskStatus = 'Completed' then t.TaskStatus end) as 'Tasks completed', sec_to_time(avg(timediff(TaskLocalUserEndDateTi

这就是我正在尝试的问题

select
    UserId,
    count(e.UserId) as 'Experiments',
    count(t.TaskId) as 'Tasks tried',
    count(case when t.TaskStatus = 'Completed' then t.TaskStatus end) as 'Tasks completed',
    sec_to_time(avg(timediff(TaskLocalUserEndDateTime,TaskLocalUserStartDateTime))) as 'Average Time'
from
    Tasks as t,
    Experiments as e
where
    t.ExperimentId = e.ExperimentId
and
    e.UserId = e.UserId
group by
    UserId;
count(e.UserId)
给出与
count(t.TaskId)
相同的结果,这是错误的。但是如果在没有任何联接的情况下运行查询,则
count()
将返回正确的结果,例如:

select
    count(UserId)
from
    Experiments
where
    UserId = UserId
group by 
    UserId;

不确定这是否有帮助,但如果运行下面的查询,是否会得到所需的结果-请参阅分组依据:

select
    count(UserId), ExperimentId
from
    Experiments
where
    UserId = UserId
group by 
    ExperimentId;
只需检查查询-注意任务和实验表之间的连接在ExperimentId上-在查询中,您声明您获得了所需的结果,但只使用了userId。让我知道这是否有帮助

select
    UserId,
    e.Experiments, -- count(e.UserId) as 'Experiments',
    count(t.TaskId) as 'Tasks tried',
    count(case when t.TaskStatus = 'Completed' then t.TaskStatus end) as 'Tasks completed',
    sec_to_time(avg(timediff(TaskLocalUserEndDateTime,TaskLocalUserStartDateTime))) as 'Average Time'
from
    Tasks as t,
--    Experiments as e 
LEFT JOIN 
(
   select count(UserId) as 'Experiments', ExperimentId from Experiments group by ExperimentId
) as e
where
    t.ExperimentId = e.ExperimentId
and
    e.UserId = e.UserId
group by
    UserId;

查询的其余部分是否工作并生成所需的结果集?是的,其余列包含有效值。只有
count(e.UserId)
列的值错误。请发布示例数据。