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

多表关联SQL查询:提取Table B中记录数超10的用户最新10条数据

解决方案:筛选高记录数用户的最新10条业务记录

思路拆解

  • 先统计每个用户在TableB中的总记录数,筛选出记录数超过10条的用户ID
  • 对这些用户的TableB记录按日期倒序排序,为每条记录编号,取编号≤10的记录
  • 关联TableA获取用户名称信息

实现代码(以MySQL为例)

SELECT 
    a.ID,
    a.名称,
    b.*
FROM 
    TableA a
JOIN (
    -- 给符合条件的用户记录添加行号
    SELECT 
        tb.*,
        ROW_NUMBER() OVER (PARTITION BY tb.UserCreated_FK ORDER BY tb.日期列 DESC) AS rn
    FROM 
        TableB tb
    JOIN (
        -- 筛选出记录数超过10条的用户
        SELECT 
            UserCreated_FK
        FROM 
            TableB
        GROUP BY 
            UserCreated_FK
        HAVING 
            COUNT(*) > 10
    ) user_filter ON tb.UserCreated_FK = user_filter.UserCreated_FK
) b ON a.ID = b.UserCreated_FK
WHERE 
    b.rn <= 10
ORDER BY 
    a.ID, b.日期列 DESC;

代码说明

  • 内层子查询user_filter:统计每个用户的业务记录总量,仅保留记录数大于10的用户ID
  • 中间层子查询:按用户分组、日期倒序给记录加行号,行号rn=1代表该用户的最新记录
  • 外层查询:关联TableA拿到用户名称,筛选行号≤10的结果,即每个达标用户的最新10条业务记录

适配提示

  • 若是Oracle、SQL Server等数据库,语法逻辑完全通用,只需确认日期列的排序方向符合业务需求
  • 若日期列包含时间戳,倒序排序可精准定位最新记录;仅存日期值时,可根据实际业务补充排序字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:05:29