You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中如何基于TIMESTAMP字段选取每个user_id的最早登录记录

各user_id对应最早登录时间查询方案

方法1:GROUP BY + MIN 聚合(最通用写法)

这是实现需求最简单的写法,兼容所有主流关系型数据库:

SELECT 
  user_id,
  DATE(MIN(log_in_time)) AS earliest_login_date
FROM 
  替换为你的实际表名
GROUP BY 
  user_id;
  • 用GROUP BY user_id保证输出的user_id全局唯一
  • MIN(log_in_time)会自动取每个用户分组下最早的登录时间
  • DATE()函数用于把带时分秒时区的时间戳转换为仅日期格式,匹配你需要的输出样式。如果需要保留完整的登录时间戳,直接去掉DATE()包裹即可。

方法2:窗口函数写法(适合扩展场景)

如果后续需要同时获取最早登录时间对应的其他字段(比如登录IP、登录设备等),可以用窗口函数实现:

SELECT 
  user_id,
  DATE(log_in_time) AS earliest_login_date
FROM (
  SELECT 
    user_id,
    log_in_time,
    ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY log_in_time ASC) AS rank_num
  FROM 替换为你的实际表名
) temp_table
WHERE rank_num = 1;
  • 内层查询按user_id分组,对每个用户的登录记录按登录时间升序排名,最早的记录排名为1
  • 外层过滤仅保留排名为1的记录,即可得到每个用户的最早登录数据

输出结果示例

两种写法返回的结果都和你要求的一致:

user_idearliest_login_date
3442021-10-05
3452021-10-03

内容的提问来源于stack exchange,提问作者Melter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:45:05