查询以获取多个日期集的最低日期差异

时间:2015-06-16 12:05:14

标签: mysql

我有一个名为tasks的表和另一个命名的活动。 tasks表有一个名称和一个keyid列。活动有一个日期字段和一个任务字段,它只与tasks表中的一行相关(如果activities.task列等于tasks.keyid列,那么活动就是该任务)。但是,一项任务可以有许多活动。我想要的是查询,它返回任务的名称以及当前日期与该任务的最新活动之间的差异。

为了更好地了解这个查询为我提供了我想要的任务与keyid 10:

SELECT t.name, MIN(DATEDIFF(CURDATE(),a.adate)), t.keyid  FROM tasks AS t, activities AS a WHERE (t.keyid='10') AND (a.task = t.keyid);

但是我不知道如何为所有任务获得同样的东西。所以如果我有10个任务,我需要10个结果,其中包含任务名称和今天与该任务的最新活动之间的日差。

我该如何撰写此查询?

1 个答案:

答案 0 :(得分:0)

您可以使用任务的最后一项活动

加入任务表
SELECT t.name, DATEDIFF(CURDATE(),a.adate), t.keyid  
FROM tasks t JOIN activities a 
ON a.task = t.keyid
AND NOT EXISTS ( SELECT 'a'
                 FROM activities a2
                 WHERE a2.task = a.task
                 AND a2.date > a.date
                )