如何从SQL返回具有相同user_id的记录的最早时间

时间:2017-01-17 07:26:38

标签: mysql sql

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的最早操作时间?

FYI user_id:bigint action_time:varchar

由于

4 个答案:

答案 0 :(得分:2)

使用mysql聚合函数。特别是MIN

  

MIN([DISTINCT] expr)返回expr的最小值。 MIN()可以采用字符串参数;   在这种情况下,它返回最小字符串值

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

答案 1 :(得分: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;

答案 2 :(得分:0)

在Datetime上执行聚合函数。在这里,您正在寻找最早的日期,这是最短的约会日期(2017年1月16日<17/1/2017)。所以使用Min()函数

通过userid从table1 group中选择userid,min(action_time);

我们正在分组,因为每个用户ID只需要一个值。

答案 3 :(得分:0)

下面的代码经过测试,可以得到理想的结果。

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