mysql查询澄清

JPr*_*Pro 4 mysql sql greatest-n-per-group

我有一个查询,我想知道我得到的结果是否是我期待的结果.

表结构如下:

Table :  results     
ID TestCase Set  Analyzed Verdict StartTime             Platform
1  1010101  ros2 false    fail    18/04/2010 20:23:44   P1
2  1010101  ros3 false    fail    19/04/2010 22:22:33   P1
3  1232323  ros2 true     pass    19/04/2010 22:22:33   P1
4  1232323  ros3 false    fail    29/04/2010 22:22:33   P2

Table : testcases
ID TestCase type
1  1010101  NOSNOS
2  1232323  N212NS
Run Code Online (Sandbox Code Playgroud)

有没有办法在每个平台上只显示最新的失败?

在上述情况下

结果应该是:

 ID TestCase Set  Analyzed Verdict StartTime             Platform type 
 2  1010101  ros3 false    fail    19/04/2010 22:22:33   P1       NOSNOS 
 4  1232323  ros3 false    fail    29/04/2010 22:22:33   P2       N212NS
Run Code Online (Sandbox Code Playgroud)

Pet*_*ang 5

这应该为您提供每个平台的最新失败.它依赖于ids按时间顺序排列.

替换*您实际需要的列.

Select *
From results r
Join testcases t On ( t.testCase = r.testCase )
Where r.id In (
    Select Max(id)
    From results
    Where verdict = 'fail'
    Group By platform
)
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用a Left Join来仅获取startTime每个最大的行platform:

Select *
From results r
Join testcases t On ( t.testCase = r.testCase )
Left Join results r2 On (     r2.platform = r.platform
                          And r2.verdict = r.verdict
                          And r2.startTime > r.startTime )
Where r.verdict = 'fail'
  And r2.id Is Null
Run Code Online (Sandbox Code Playgroud)