2015-07-28 88 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) 

這沒有測試,但應該得到你想要的。