簡體   English   中英

如何通過mysql獲取時間序列

[英]How to get temporal sequence by mysql

在我的表格中,有一個id列,一個日期列和一個狀態列,如下所示:

ID    DATE    STATUS
1     0106      A
1     0107      A
1     0112      A
1     0130      B
1     0201      A
2     0102      C
2     0107      C

我想獲得每個ID的時間順序。 這意味着,如果在相鄰時間中一個id處於相同狀態,則將省略前一個。 查詢結果如下:

ID    DATE    STATUS
1     0112      A
1     0130      B
1     0201      A
2     0107      C

如何通過MySQL來實現?

您必須使用變量來做到這一點:

select `id`, `date`, `status`
from (
    select *, @rowno:=if(@grp = `STATUS`, @rowno + 1 , 1) as rowno, @grp := `STATUS`
    from yourtable
    cross join (select @grp := null, @rowno := 0) t
    order by `id`, `date` desc
) t1
where rowno = 1
order by `id`, `date`

SqlFiddle演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM