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

SQL如何查询每个应用最新版本的name、description等字段值

查询所有应用最新版本字段的SQL实现方案

你的表结构是典型的追加式版本控制设计,针对「获取每个应用对应最新版本的动态字段」需求,有以下几种可落地的写法,适配不同数据库环境:

  • 通用兼容写法(支持所有关系型数据库)
    基于你已经写出的最大版本查询语句做内连接即可,是兼容性最好的方案:
    SELECT
      av.application_id,
      av.name,
      av.description,
      av.version
    FROM application_version av
    INNER JOIN (
      SELECT application_id, MAX(version) AS max_version
      FROM application_version
      GROUP BY application_id
    ) AS latest_version
      ON av.application_id = latest_version.application_id
      AND av.version = latest_version.max_version;
    
    如果需要关联查询application表中存储的静态字段(比如创建时间),可以再关联主表:
    SELECT
      a.id AS application_id,
      a.created_at,
      av.name,
      av.description,
      av.version
    FROM application a
    INNER JOIN application_version av ON a.id = av.application_id
    INNER JOIN (
      SELECT application_id, MAX(version) AS max_version
      FROM application_version
      GROUP BY application_id
    ) AS latest_version
      ON av.application_id = latest_version.application_id
      AND av.version = latest_version.max_version;
    
  • 窗口函数写法(支持MySQL 8.0+、PostgreSQL、SQL Server等主流新版本数据库)
    性能更优,写法更简洁,适合数据量较大的场景:
    SELECT
      application_id,
      name,
      description,
      version
    FROM (
      SELECT
        *,
        ROW_NUMBER() OVER (
          PARTITION BY application_id
          ORDER BY version DESC
        ) AS row_rank
      FROM application_version
    ) t
    WHERE row_rank = 1;
    

    注意:如果存在同一个应用下version重复的异常数据,ROW_NUMBER()会随机取其中一条返回;如果需要返回同版本下的所有记录,可以将ROW_NUMBER()替换为RANK()。

  • PostgreSQL专属简洁写法
    PostgreSQL支持DISTINCT ON语法,可以用更短的语句实现同等效果:
    SELECT DISTINCT ON (application_id)
      application_id,
      name,
      description,
      version
    FROM application_version
    ORDER BY application_id, version DESC;
    

避坑提示:不要直接在GROUP BY application_id的语句中直接查询name、description字段,绝大多数数据库会直接抛出语法错误,少数开启非严格模式的数据库会返回随机匹配的字段值,导致数据和最新版本不对应。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:18:26