我对 SQL 很陌生,这个问题让我难住了。你能帮我解答这个问题吗?
我有以下 2 个表:
表 1:问题表
Id | RunId | Value
---
1 | 1 | 10
2 | 1 | 20
3 | 1 | 30
4 | 2 | 40
5 | 2 | 50
6 | 3 | 60
7 | 4 | 70
8 | 5 | 80
9 | 6 | 90
表 2:运行表
RunId | EnvironmentId
---
1 | 1
2 | 3
3 | 1
4 | 2
5 | 4
6 | 2
我需要代表最大 RunId 的 IssueTable 行,这些行按 RunTable 中的 EnvironmentId 分组。我需要从表中得到的结果是:
预期结果:
Id | RunId | Value | EnvironmentId
---
4 | 2 | 40 | 3
5 | 2 | 50 | 3
6 | 3 | 60 | 1
8 | 5 | 80 | 4
9 | 6 | 90 | 2
因此,只有每个 EnvironmentId 的 RunTable 中具有最新/最高 RunId 的行。例如,对于“1”的EnvironmentId,我只需要包含“3”的RunId 的行,因为RunTable 中EnvironmentId“1”上的最新RunId 是“3”。同样,EnvironmentId“2”的最近运行是 RunId“6”
使用子查询从运行表中获取每个环境 ID 的最大运行 ID。将获得的结果加入到问题表中并选择所需的列。
select i.id, i.runid, i.value, r.environmentid
from (select environmentid, max(runid) maxrunid
from runtable
group by environmentid) r
join issuetable i on i.runid = r.maxrunid
order by i.runid, i.id
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)