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

如何编写SQL查询关联表,获取当前版本为1.3的用户

首先我们先明确两张表的结构与示例数据:

用户数据表(记录用户的版本变更历史,Id自增,数值越大代表记录越新)

IdNameVersionId
1Name A1
2Name B2
3Name C1
4Name A2
5Name E1
6Name F3
7Name G2
8Name C4
9Name A5

版本配置表

IdVersion
11.2
21.3
31.4
41.5
51.6

实现逻辑

用户每次切换版本都会在用户数据表新增一条记录,因此每个用户(按Name字段分组)对应的最大Id的记录就是用户当前正在使用的版本,只需筛选出这些最新记录中版本号为1.3的条目即可。

查询语句

通用子查询写法(兼容所有主流数据库)

SELECT u.*
FROM user_version_records u
JOIN version_config v ON u.VersionId = v.Id
WHERE u.Id = (
    SELECT MAX(Id)
    FROM user_version_records
    WHERE Name = u.Name
)
AND v.Version = '1.3';

窗口函数写法(适用于MySQL8.0+、PostgreSQL、SQL Server等支持窗口函数的数据库)

WITH latest_user_records AS (
    SELECT 
        *,
        ROW_NUMBER() OVER(PARTITION BY Name ORDER BY Id DESC) AS rn
    FROM user_version_records
)
SELECT l.Id, l.Name, l.VersionId
FROM latest_user_records l
JOIN version_config v ON l.VersionId = v.Id
WHERE l.rn = 1 AND v.Version = '1.3';

返回结果

IdNameVersionId
2Name B2
7Name G2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:06:01