2016-03-27 75 views
0

忽略重複條目我有如下表:MySQL的:在選擇

Test_Results 
|ID|Test Name| Status| Retry| 
|1 | test1 | passed| 0 | 
|2 | test2 | failed| 0 | 
|3 | test2 | passed| 1 | 
|4 | test3 | failed| 0 | 
|5 | test3 | failed| 1 | 
|6 | test4 | failed| 0 | 
|7 | test4 | failed| 1 | 
|8 | test4 | passed| 2 | 

的邏輯是:如果測試失敗,那麼重試,並且重試字段指示的重試次數。例如,測試2失敗(ID 2)並在重試(ID 3)後成功。或者,測試4失敗2次(ID爲6和7),並在第8次成功。

我需要一個查詢來選擇所有隻接受最後一個重試結果的測試。所以在test2的情況下,它將計數ID3 =通過,對於test3它將取ID5 =失敗,對於test4則取ID8 =通過。

+1

我的第一個建議是扔掉'MySQL'而轉向一個更合理的解決方案,如'Postgresql',或者'MS SQL'等 – Jacobian

回答

0

我想你應該得到最大的ID,而不是最大重試這樣

select * from test_results 
where (test_name, id) in select (test_name, max(id) from test_results group by test_name)) 
+0

公平點,但沒有什麼的問題暗示這一點,除常識外 – Rik

1
SELECT * FROM Test_Results t 
WHERE t.ID in (SELECT MAX(ID) FROM Test_Results GROUP BY Test_Name) 
0

獲取測試名最大ID並獲得其結果。

select * from test_results where id in 
(select max(id) from test_results group by test_name); 

+----+-----------+--------+-------+ 
| id | test_name | status | retry | 
+----+-----------+--------+-------+ 
| 1 | test1  | passed |  0 | 
| 3 | test2  | passed |  1 | 
| 5 | test3  | failed |  1 | 
| 8 | test4  | passed |  2 | 
+----+-----------+--------+-------+