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

如何从多表关联生成的表中提取每个用户最高Attempts的行

提取每个用户最高Attempts值的完整行数据

我有一张通过多表关联生成的数据表,结构包含UserId.、Attempts.、quizno字段,每个用户对应多条不同Attempts.值的记录,需要筛选出每个用户对应最高Attempts.值的完整行。

原始数据表

UserId.Attempts.quizno
First1assd.
First2ffjfjf.
Second1cbcbc.
Second2tititi.
Second3cncncn.

期望结果表

UserId.Attempts.quizno
First2ffjfjf
Second3cncncn

方法1:使用窗口函数(推荐,兼容多数现代数据库)

利用ROW_NUMBER()窗口函数对每个用户的记录按Attempts.降序排序,取排序为1的行即可得到每个用户的最高Attempts记录:

SELECT UserId., Attempts., quizno
FROM (
    SELECT 
        UserId., 
        Attempts., 
        quizno,
        ROW_NUMBER() OVER (PARTITION BY UserId. ORDER BY Attempts. DESC) AS rn
    FROM your_table_name
) t
WHERE rn = 1;

如果同一个用户存在多条相同最高Attempts.的记录,且需要保留所有这类记录,可将ROW_NUMBER()替换为RANK()。

方法2:子查询关联(兼容旧版数据库)

先通过子查询找出每个用户的最高Attempts.值,再与原表关联获取完整行数据:

SELECT t1.UserId., t1.Attempts., t1.quizno
FROM your_table_name t1
INNER JOIN (
    SELECT UserId., MAX(Attempts.) AS max_attempts
    FROM your_table_name
    GROUP BY UserId.
) t2 ON t1.UserId. = t2.UserId. AND t1.Attempts. = t2.max_attempts;

注意:若同一个用户有多条相同最高Attempts.的记录,此方法会返回所有符合条件的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 00:02:44