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
由于
答案 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;