2017-01-17 50 views
-1
user_id  action_time 
7595  2017-01-09 19:10:56 
7595  2017-01-09 19:13:42 
32664727 2017-01-08 12:27:00 
32664727 2017-01-08 12:26:30 
29714095 2017-01-12 23:03:34 
22380075 2017-01-12 18:59:29 
22380075 2017-01-12 18:59:59 
32670641 2017-01-14 7:45:53 
32670641 2017-01-14 7:27:39 
23989699 2017-01-12 0:16:28 

嗨,我有這樣的一些記錄,相同的user_id可能有不同的操作時間。我如何使用SQL僅爲每個user_id返回最早的操作時間?如何返回SQL中最舊的時間記錄user_id

FYI USER_ID:BIGINT ACTION_TIME:VARCHAR

感謝

+0

此數據集是否恰當地代表了問題? – Strawberry

+0

並使用適當的數據類型存儲日期和時間 – Strawberry

回答

2

使用MySQL聚合函數。具體爲MIN

MIN([DISTINCT] expr)返回expr的最小值。 MIN()可能需要一個字符串參數; 在這種情況下,返回最小的字符串值

SELECT MIN(action_time), user_id from my_table GROUP BY user_id 
0

試試這個

select t1.* from tablename t1 inner join (select min(action_time) as mtime from tablename group by user_id) t2 on t1.action_time = t2.mtime;

0

日期時間上執行聚合函數。在這裏你正在尋找最早的日期,這是最低日期(2017年1月16日< 17/1/2017)。所以使用Min()函數

通過userid從table1組中選擇userid,min(action_time);

我們正在分組,因爲我們每個用戶只需要一個值。

0

下面的代碼已經過測試並會給出所需的結果。

select *,min(action_time) from table group by userid;