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

如何在SQLite中获取每个用户的最新录入日期?分组查询时如何获取用户最后一次提交表单的日期?

解决SQLite分组查询获取用户最后提交日期的问题

这是个很常见的分组查询误区,我来帮你理清思路并解决问题~

首先得明确为什么你之前的语句达不到预期:SQLite在执行GROUP BY时,如果你选择了非聚合的列(比如直接SELECT *),它会默认返回分组里的第一条记录(也就是你看到的首次提交日期),而且ORDER BY是在分组完成后才执行的,所以对分组内的取值没有影响。

下面给你两种可行的解决方案:

方案1:仅获取用户ID和最后提交日期

如果只需要每个用户的ID和最后提交日期,直接用MAX()聚合函数就能搞定:

SELECT user_id, MAX(date) AS last_submit_date
FROM answers
GROUP BY user_id
ORDER BY last_submit_date DESC;

MAX(date)会直接提取每个user_id分组里的最大(最新)日期,完美符合你的需求。

方案2:获取用户最后提交的整条记录

如果需要获取该用户最后提交表单的完整记录(不止ID和日期),可以用子查询关联原表:

SELECT a.*
FROM answers a
INNER JOIN (
    -- 先子查询找出每个用户的最后提交日期
    SELECT user_id, MAX(date) AS last_date
    FROM answers
    GROUP BY user_id
) b ON a.user_id = b.user_id AND a.date = b.last_date
ORDER BY a.date DESC;

这个逻辑是:先通过子查询得到每个用户的user_id和对应的最后提交日期,再把这个结果和原表关联,匹配出每个用户最后提交的那条完整记录,最后按日期降序排序。

需要注意的是,如果同一个用户在同一时间提交了多条记录,这个语句会返回所有同时间的记录;如果要确保每个用户只返回一条,可以根据实际需求再加额外的筛选条件(比如主键ID的MAX值)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 20:32:33