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

MS Access中提取含重复数据表格内各设备的最大序列号

解决按设备获取最大序列号的SQL查询问题

原查询的问题

  • 语法错误:SELECT语句中[2016 New].Equipment,末尾多了一个逗号,会导致SQL解析失败。
  • 列名不匹配:原表格的序列号列是serial number,但查询中使用了[Numero di serie],数据库会找不到该列。
  • 分组逻辑错误:GROUP BY包含了唯一的ID字段,每个ID对应一行数据,分组后每个组只有一条记录,完全无法实现按equipment聚合找最大序列号的需求。

正确实现方法

方法1:子查询关联法

先通过子查询计算每个设备对应的最大序列号,再关联原表获取对应的ID:

SELECT t.ID, t.equipment, t.[serial number]
FROM [2016 New] t
INNER JOIN (
    -- 子查询:按设备分组,获取每个设备的最大序列号
    SELECT equipment, MAX([serial number]) AS max_serial
    FROM [2016 New]
    GROUP BY equipment
) sub 
ON t.equipment = sub.equipment AND t.[serial number] = sub.max_serial;

方法2:窗口函数法(适用于支持窗口函数的数据库,如SQL Server、PostgreSQL等)

使用ROW_NUMBER()窗口函数,按设备分区后对序列号降序排序,取每个分区的第一行:

SELECT ID, equipment, [serial number]
FROM (
    SELECT 
        ID, 
        equipment, 
        [serial number],
        -- 按设备分区,序列号降序排名
        ROW_NUMBER() OVER (PARTITION BY equipment ORDER BY [serial number] DESC) AS rn
    FROM [2016 New]
) t
WHERE rn = 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:11:01