SQL可以从DB获得模块的最新版本(最大ID)?

问题描述 投票:0回答:1

目标:我正在尝试从具有以下记录的数据库中获取每个“模块”(例如API,Angular Site,Admin等)的最新版本,以用于生产和发布(在主服务器和dr服务器上)部署

问题:我的查询似乎返回除一个特定模块以外的所有模块的最新消息它返回所有产品的最新生产版本(版本46.14),除了一个模块(返回版本45.7)之外]

我已经花了几个小时了

我尝试过的事情

我尝试过更改分组依据以及订购依据中的顺序

我尝试从分组依据和排序依据中删除项目

我尝试从查询的最小部分开始,并从头开始逐段添加

我已经查询了有关max,group by和order by的信息>

当我没有“位置”字段时,似乎返回了正确的版本。但是,位置是一个新的必填字段,因此我无法摆脱它。

我不确定现在要朝哪个方向走?

Key

Env =环境(例如Prod或Rel)位置(主要或灾难恢复)Ver =版本(例如45.7或46.14)

使用SQL Server

SQL

select m.Name as Module, l.Name as Location, e.Name as Env, v.Name as Ver, CONVERT(NVARCHAR(16), d.OccurredOn, 120) 
from deployment d 
inner join module m on d.ModuleID = m.ID
inner join Location l on d.LocationID = l.ID 
inner join Environment e on d.EnvironmentID = e.ID
inner join versionset v on d.VersionSetID = v.ID
where d.ID in ( 
select max(d.ID) 
    from deployment d
    inner join module m on d.moduleID = m.ID
    where d.OccurredOn > '2019-01-01' and m.SuiteID = 3 and m.ID <> 12 and m.ID <> 19 AND d.EnvironmentID <> 4
    group by d.LocationID, d.EnvironmentID, d.ModuleID  
    )
    order by d.LocationID, d.EnvironmentID, d.ModuleID

目标:我试图从具有部署记录的数据库中获取每个“模块”(例如API,Angular Site,Admin等)的最新版本,以进行生产和发布(在主服务器和dr服务器上)。

sql-server max subset
1个回答
0
投票

当我没有位置字段时,似乎返回正确的版本。

© www.soinside.com 2019 - 2024. All rights reserved.