2013-03-29 54 views
0

我有興趣地閱讀下面的博客文章在MySQL模擬ROWNUM:MySQL的模擬行數

http://craftycodeblog.com/2010/09/13/rownum-simulation-with-mysql/

我想這個概念延伸具有在一定條件下的行號復位我得到滿足,即一些列變化值,那麼結果會是這樣的:

id | date  | rownum 
-----+------------+-------- 
    1 | 2013-03-20 |  1 
    2 | 2013-03-20 |  2 
    3 | 2013-03-20 |  3 
    4 | 2013-03-21 |  1 <-- rownum resets because date changes 
    5 | 2013-03-21 |  2 
    6 | 2013-03-21 |  3 
    7 | 2013-03-22 |  1 
    8 | 2013-03-22 |  2 

我一直在努力,現在摸不着頭腦了幾個小時,沒有任何令人滿意的顯示它。任何幫助,將不勝感激!

+1

oracle這將是一個LEAD或LAG函數。這可能有助於您的搜索。 – Randy

+0

http://stackoverflow.com/questions/2520357/mysql-get-row-number-on-select類似? – hjpotter92

回答

1

您可以實現用戶自定義的變量使用以獲得每個組日期的行數如下:

select id, date, rownum 
from 
(
    select id, 
    date, 
    @row:=case when @prev=date then @row else 0 end +1 rownum, 
    @prev:=date 
    from yourtable 
    cross join (select @row:=0, @prev:=null) c 
    order by date 
) d 
order by date, rownum 

SQL Fiddle with Demo

+0

我不認爲這很好,因爲您正在設置一個變量並在相同的語句中使用它。請參閱問題中的鏈接。 – koriander