2015-07-28 63 views
0

我有一个更新的条目日志,每个条目的编号都有不同的更新类别。 例如Mysql获取组的最新条目

|Ticket Number | DateTime | Update   | Category | 
| I0001  | 2015-07-28 | Spoke to someone | Update | 
| I0002  | 2015-07-28 | Issue started | Update | 
| I0002  | 2015-07-27 | Owner changed | System | 
| I0002  | 2015-07-26 | Auto Alarm  | System | 
| I0001  | 2015-07-28 | More affected | Update | 
| I0001  | 2015-07-25 | Auto Alarm  | System | 
| I0003  | 2015-07-01 | Assigneed  | Update | 

我希望它有一个列表,它显示了最后的日期时间,更新每个票号及类别,所以我将结束与此类似。

|Ticket Number | DateTime | Update   | Category | 
| I0001  | 2015-07-28 | Spoke to someone | Update | 
| I0002  | 2015-07-28 | Issue started | Update | 
| I0002  | 2015-07-27 | Owner changed | System | 
| I0001  | 2015-07-25 | Auto Alarm  | System | 
| I0003  | 2015-07-01 | Assigneed  | Update | 

我试过几种方法,但没有接近完成它。

+2

能否请您创建一个sqlfiddle? – Jens

+0

小提琴中的数据的结果是什么? – Jens

+0

是否有某种在此表中自动增量的ID列? –

回答

0

查询

select t2.`Ticket Number`, 
t2.`DateTime`, 
t2.`Update`, 
t2.Category 
from 
(
    select t.*, 
    @rownum := @rownum + 1 AS rn 
    from tableName t, 
    (select @rownum := 0) r 
    order by t.`Ticket Number`,`DateTime` desc 
)t2 
group by t2.`Ticket Number`,Category 
having min(t2.rn) 
order by t2.`DateTime` desc,t2.`Ticket Number`; 

Fiddle demo

+0

谢谢,我从来没有这样做过。 – user2220694

-1
select `Tickte number`, max(`datetime`), category from `table` 

这会给你最新的每张机票和类别,如果您还包括update场,你会得到很多的每张票的记录,由于GROUP BY。

如果你想要一个匹配你发布的结果集的查询,你将不得不使用子选择或排名功能来完成它。

select `Ticket number` 
    , max(`datetime`) 
    , category 
    , (select `update` from `table` ts where ts.`ticket number` = t.`ticket number` and ts.category = t.category) as `update` 

    from `table` t GROUP BY `Ticket Number`, category, 
       (select `update` from `table` ts where ts.`ticket number` = t.`ticket number` and ts.category = t.category) 

这没有测试,但应该得到你想要的。