MySQL组按连续值表示

时间:2015-01-26 20:18:46

标签: mysql sql

我有rate_history表,每个员工的数据和他在工作岗位上的费率变化。我希望在单个查询中为每个员工更改工作职位。所选作业是连续行中最新更新的作业。请注意,随着时间的推移,可以将相同的工作职位重新分配给员工。

id job_id updated
1    1    01-01-2015
2    1    01-02-2015
3    2    01-01-2015
4    2    01-03-2015
5    2    01-02-2015
6    1    01-01-2015

结果应为:

id job_id updated
1    1    01-01-2015
3    2    01-01-2015
6    1    01-02-2015

1 个答案:

答案 0 :(得分:3)

好的,根据我对你提供的输出的理解,这是我的小提琴链接,

您可以使用行号(不适用于mysql但使用环形交叉口),然后获取具有与先前记录不同的job_ids的记录。

Fiddle Link

select t1.id
     , t1.job_id
     , t1.updatedate
     , t2.rn as rnt2
  from temprwithrn as t1
  left 
  join temprwithrn as t2
    on t1.rn = t2.rn + 1
 where t1.job_id <> t2.job_id or t2.job_id is null