我有如下表:MySQL的:事件表:按時間順序連續加入
user_id | Membership_type | start_Date
1 | 1 | 1
1 | 1 | 2
1 | 2 | 3
1 | 3 | 4
與幾個用戶,我需要找出每個用戶在會員類型的變化和生活的變化是,在以下格式(開始日期爲datetime,把它放在這裏INT爲了便於理解)
user_id |Membership_change| change_Date
1 | 1 to 2 | 3
1 | 2 to 3 | 4
我已經試過
select m1.user_id, concat(m1.Membership_type, ' to ',m2.Membership_type), m2.start_date
from table_membership m1
join table_membership m2
on m1.user_id=m2.user_id and m1.start_date<m2.start_date and m1.membership_type<>m2.membership_type
但這將返回
user_id |Membership_change| change_Date
1 | 1 to 2 | 3
1 | 1 to 2 | 3
1 | 1 to 3 | 4
1 | 2 to 3 | 4
重複的1〜2是不通過分組去除問題,但我似乎無法能夠想辦法,以避免在1到3的結果。我基本上只需要按照時間順序從一個會員加入到下一個
任何想法,將不勝感激!
編輯:有一個想法添加列m1.start_date和group_ account_id和m1.start_date,所以我只會得到每個條目加入第一行。此外,還要根據加入前的日期進行預先排序,以確保它們全部符合要求。將測試。
這仍然會留下1到3的結果,這是不期望的,因爲它不是按時間順序。用戶有一個會員類型1,然後再次1,然後從1更改爲2,然後從2更改爲3.我只需要按時間順序邏輯更改 – AdrianBR 2013-03-07 11:09:49
您檢查,因爲我們與Membership_change也分組 – 2013-03-07 11:11:00
是的,因爲1到3是獨一無二的,你正在分組,它將被保留 – AdrianBR 2013-03-07 11:12:46