Mysql:用2个条件选择不同的值

时间:2014-05-27 04:06:11

标签: php mysql sql

我有一个名为jobs的表,其中包含字段:id,status。另一个名为jobs_history的表包含字段:id,jobid,status,added_time。

每次通过php编辑作业时,我都会将更新后的数据插入到job_history表中,其中包含jobid,用户选择状态和added_time。

可能会多次编辑作业,因此job_history表中可能有多行用于一个作业。状态字段可能包含不同的状态,例如,第一个状态为“正在审核”,第二个可能是“正在进行中”,第三个可能是“发送电子邮件”,第四个是“已完成”。

现在,我需要计算该日期状态为“进行中”的特定日期时间的作业总数。以下是jobs_history表中的一些示例数据:

id | jobid | status       | added_time
--------------------------------------
1  | 10    | Under review | 2014-05-20 01:00:00
2  | 10    | In progress  | 2014-05-21 02:30:00
3  | 10    | E-mail sent  | 2014-05-23 10:00:00
4  | 10    | Completed    | 2014-05-23 04:00:00
5  | 11    | Under review | 2014-05-19 05:00:00
6  | 11    | In progress  | 2014-05-20 06:00:00
7  | 11    | E-mail sent  | 2014-05-20 07:00:00
8  | 11    | Completed    | 2014-05-22 08:00:00
9  | 12    | Under review | 2014-05-23 09:00:00
10 | 12    | In progress  | 2014-05-24 02:00:00
11 | 13    | Under review | 2014-05-20 10:00:00
12 | 13    | In progress  | 2014-05-20 12:00:00

我想计算2014-05-21 06:00:00状态为“进行中”的作业总数。查询应该生成结果2,即jobid 10和13,因为这些是2014-05-21 06:00:00中具有“进行中”状态的唯一作业。

我在jobs_history表中有大约400,000个数据,因此应该以最快的方式编写查询。

谢谢,非常感谢您对此的帮助。

1 个答案:

答案 0 :(得分:-1)

如果日期格式不同,可以使用date_format函数。检查此链接 http://sqlfiddle.com/#!2/4a6e8b/17