2013-11-01 43 views
1

MySQL數據庫表:在SQL select語句中,如何計算一行的位置?

create table t (
    visitor_id int(11), 
    activity_type varchar(10), 
    date date 
); 

該行:

insert into t (visitor_id, activity_type, date) values (1, 'hit', '2012-1-1'); 
insert into t (visitor_id, activity_type, date) values (1, 'event', '2012-1-2'); 
insert into t (visitor_id, activity_type, date) values (2, 'hit', '2012-1-2'); 
insert into t (visitor_id, activity_type, date) values (2, 'event', '2012-3-5'); 
insert into t (visitor_id, activity_type, date) values (2, 'hit', '2012-3-2'); 
insert into t (visitor_id, activity_type, date) values (1, 'hit', '2012-3-5'); 
insert into t (visitor_id, activity_type, date) values (1, 'hit', '2012-2-1'); 

我想編寫一個查詢來獲取用戶,活動類型的數據轉儲,並在其中活動發生的順序,看起來像如下:

visitor_id, activity_type, Position 
1,   hit,    1 
1,   event,   2 
1,   hit,    3 
1,   hit,    4 
2,   hit,    1 
2,   hit,    2 
2,   event,   3 

到目前爲止,我已經寫了下面的解決方案:

select visitor_id, activity_type, 'Position' 
from t1 
order by visitor_id, date 
; 

難的部分是列位置。這應該表示該訪客ID的行順序。有什麼方法可以確定位置?

+0

SQL不保證訂單,除非你指定'ORDER BY'條款。 '位置'並不意味着很多。如果你TIMESTAMP的一切(而不是日期),可能會給你一個開始 – 2013-11-01 02:51:56

+0

可能重複[MySQL獲取行位置在ORDER BY](http://stackoverflow.com/questions/3614666/mysql-get-row-position-按順序逐) – Walls

回答