mysql - 最新数据按最新日期和试运行排序
问题描述
我想知道是否有一种简单的方法来对表格视图进行排序,因此您只能获得按日期排序的每个最新的不同测试运行。
我有一个包含日期、引擎(就像测试的项目名称,它会根据测试而变化)和每次运行的 ID 的表。
SELECT
`testjob`.`id` AS `Testjobid`,
`testjob`.`engine` AS `Engine`,
`testjob`.`StartTime`
FROM TestRun
ORDER BY `testjob`.`StartTime` DESC
所以在 SQL 运行之后,会显示这个表:
但实际上我只需要这个:
注意:这个表每天都会更新,引擎名称也会随着时间的推移而变化,所以我不能只输入三个引擎名称并以这种方式获取最新数据。我能想到的唯一解决方案是制作一个 SQL 来获取每个引擎的名称,然后制作一个循环来遍历每个引擎的表,但我希望有比这更好的方法吗?
解决方案
您可以使用相关子查询:
select tr.*
from TestRun tr
where tr.StartTime = (select max(tr1.StartTime) from TestRun tr1 where tr1.engine = tr.engine);
在较新的版本中,您可以使用row_number()
:
select tr.*
from (select tr.*, row_number() over (partition by tr.engine order by tr.StartTime desc) as seq
from TestRun tr
) tr
where tr.seq = 1;
如果您有关系,starttime
则子查询将需要修改为limit 1
.
推荐阅读
- html - 我可以检查 CSS 中的一个属性是否等于另一个属性吗?
- c++ - 找不到 -lfreeglut 代码块
- c# - 多个实例中的相同 IHostedService
- flutter - 无法解析配置“:app:debugRuntimeClasspath”的所有文件。,颤动
- php - cakephp 3 中动态下拉列表的问题
- java - 在连接四中检查获胜者 - Kotlin
- android - Android Kotlin - 房间本地存储,构建错误“执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生故障”
- mysql - VB.net 如果某个值不符合 Mysql 的要求,请检查下一行
- python - 使用多处理和线程并行处理非常大的文本文件
- javascript - 在角度拦截器中设置 cookie