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

如何在MS Access SQL中实现主表关联子表最大行数据?

MS Access SQL实现主表关联子表对应最大someValue行
  • 基础实现方案(适用于需保留所有同最大值行的场景)
    先通过子查询统计每个主表关联项对应的子表最大someValue,再将主表、子表与统计结果关联,筛选出匹配的行:

    SELECT a.*, b.*
    FROM tableA AS a
    INNER JOIN tableB AS b ON a.id = b.a_id
    INNER JOIN (
        SELECT a_id, MAX(someValue) AS max_someValue
        FROM tableB
        GROUP BY a_id
    ) AS b_max ON b.a_id = b_max.a_id AND b.someValue = b_max.max_someValue;
    
  • 单一行匹配方案(若同最大值有多行,仅返回其中一行)
    如果需要每个主表行仅关联子表中someValue最大的一行(比如按子表主键排序取最后一条),可以用带TOP 1的子查询:

    SELECT a.*, b.*
    FROM tableA AS a
    INNER JOIN tableB AS b ON a.id = b.a_id
    WHERE b.id = (
        SELECT TOP 1 id
        FROM tableB
        WHERE a_id = a.id
        ORDER BY someValue DESC, id DESC
    );
    
  • 简化版单值匹配
    若只需确保someValue是最大值,无需处理同值多行的情况,可使用更简洁的子查询:

    SELECT a.*, b.*
    FROM tableA AS a
    INNER JOIN tableB AS b ON a.id = b.a_id
    WHERE b.someValue = (
        SELECT MAX(someValue)
        FROM tableB
        WHERE a_id = a.id
    );
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:30:59