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

SQL查询需求:获取指定类别零件的最新版本属性

解决指定类别下零件最新版本属性查询问题

方法一:使用窗口函数(推荐,支持SQL Server、MySQL 8.0+、PostgreSQL等主流数据库)

窗口函数ROW_NUMBER()能快速实现按零件分组,筛选每组内的最新版本数据。假设你的表名为PartAttributes,核心字段包括PartNumber(零件编号)、REV(版本号,默认版本号越大越新)、Class(类别),以及其他属性字段(如Weight、Size等)。

SELECT *
FROM (
    SELECT 
        *,
        ROW_NUMBER() OVER (PARTITION BY PartNumber ORDER BY REV DESC) AS RowNum
    FROM PartAttributes
    WHERE Class = 'CAR' -- 替换为目标类别,比如'TRUCK'
) AS Temp
WHERE RowNum = 1;
  • PARTITION BY PartNumber:按零件编号分组,每个零件单独处理
  • ORDER BY REV DESC:每组内按版本号倒序排列,最新版本排在第1位
  • RowNum = 1:仅保留每组的第一行,即每个零件的最新版本数据

方法二:关联子查询(兼容老版本数据库)

如果你的数据库不支持窗口函数(如MySQL 5.x),可以先通过子查询获取每个零件的最新版本号,再关联原表提取完整属性:

SELECT pa.*
FROM PartAttributes pa
INNER JOIN (
    SELECT PartNumber, MAX(REV) AS LatestRev
    FROM PartAttributes
    WHERE Class = 'CAR'
    GROUP BY PartNumber
) AS LatestParts ON pa.PartNumber = LatestParts.PartNumber AND pa.REV = LatestParts.LatestRev
WHERE pa.Class = 'CAR';
  • 子查询LatestParts先筛选指定类别下每个零件的最大版本号
  • 通过PartNumber和REV关联原表,拿到对应最新版本的所有属性数据

注意事项

  • 如果REV是V1、V2这类字符串版本号,需确保排序逻辑符合实际版本规则(比如V10要比V2新,可能需要提取数字部分排序)
  • 若同个零件同版本存在多条数据,窗口函数方法会随机取一条;若需保留所有同版本数据,可将ROW_NUMBER()替换为RANK()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:50:55