MySQL - 显示最新的成功测试

时间:2016-03-22 09:37:55

标签: mysql

如何通过程序获得所有最新的成功测试?最新版本具有最高构建数字,并且成功 PASSED OF CONCERN

我的表看起来像这样(我从原文中排除了一些列):

+----+---------+----------------+-------+-----------+---------+
| ID | Test    |    Program     | Build |   Result  | Tester  |   
+----+---------+----------------+-------+-----------+---------+
| 1  |       1 | Mag. & Speech  | 1825  | PASSED    | Dale    |
| 2  |       2 | Scr. Reader    | 1820  | PASSED    | Aadarsh |
| 3  |       2 | Scr. Reader    | 1821  | PASSED    | Tony    |
| 4  |       2 | Scr. Reader    | 1824  | PASSED    | Tony    |
| 5  |       2 | Mag. & Speech  | 1820  | PASSED    | Colin   |
| 6  |       2 | Mag. & Speech  | 1821  | FAILED    | Dale    |
| 7  |       2 | Mag. & Speech  | 1822  | OF CONCERN| Tony    |
| 8  |       2 | Mag.           | 1820  | PASSED    | Steven  |
| 9  |       3 | Scr. Reader    | 1820  | NOT TESTED| Aadarsh |
+----+---------+----------------+-------+-----------+---------+

结果我想得到一行( ID )1,4,7,8。如您所见,没有任何程序具有多个相同的测试。

修改 向表中添加了一些缺少的信息。 可悲的是,我不再有查询了,我试过,但是我没有在 Where Order By 中走得很远。

1 个答案:

答案 0 :(得分:2)

此查询应该可以解决问题

SELECT      t3.*
    FROM    (
        SELECT      t1.ID,
                    MAX(t1.Build) as Build
            FROM    table_name t1
            WHERE   LOWER(t1.Result) NOT IN( 'n/a', 'not completed', 'not tested' )
        GROUP BY    t1.Test, t1.Program
        ) t2
INNER JOIN  table_name t3
        ON  t3.ID = t2.ID
        AND t3.Build = t2.Build;

不幸的是,由于受限制,它有点复杂。

请用正确的名称

替换table_name(在2个地方)