选择最长日期

时间:2016-09-01 13:16:44

标签: php mysql

我有一张如下表:

Id  fkEmp_id  Date          Type
1     1       2016-08-20      1
2     2       2016-08-28      1
3     2       2016-08-30      0

我想根据" Type"选择记录。 <> 0和"日期"应该是每个员工的最长日期。

我尝试以下查询:

select *  from table where Type <> 0 and fkEmp_Id = 2 order by max(Date)

但结果如下所示:

 Id  fkEmp_id   Date           Type 
  2    2         2016-08-28     1

如果Type为1且每个FkEmp_id的Date为Max,那么我只想获取记录。怎么做?请帮帮我。

3 个答案:

答案 0 :(得分:2)

这是一个简单的典型聚合(GROUP BY) query

 SELECT MAX(Date) as MaxDate, fkEmp_id  
   FROM table
  WHERE Type <> 0
  GROUP BY fkEmp_id  

答案 1 :(得分:0)

因此,从获得每个员工fkemp_id的“最大日期”的查询开始。

然后将该查询用作内联视图。将其连接到原始表以过滤掉除了类型&lt;&gt; 0和日期与给定fkemp_id的“最大日期”匹配的行之外的所有行。

例如:

SELECT t.id
     , t.fkemp_id
     , t.date
     , t.type
  FROM ( -- inline view query to return maximum date for each fkemp_id
         SELECT n.fkemp_id
              , MAX(n.date) AS max_date
           FROM mytable n
          GROUP BY n.fkemp_id
       ) m
  JOIN mytable t
    ON t.fkemp_id = m.fkemp_id
   AND t.date     = m.max_date
   AND t.type    <> 0
 ORDER BY t.fkemp_id

答案 2 :(得分:0)

您可以按如下方式使用子查询:

SELECT max(date), fkemp_id from emp
where fkemp_id not in (Select fkemp_id from emp where type = 0)
GROUP by fkemp_id