2016-11-18 51 views
1

我有下表中的MySQL:Mysql的選擇,如果MAX VAL和其他條件

id|time|depth 

ID和時間是主鍵。當最大時間深度不爲0時,我需要一個查詢來選擇一行。 理想情況下,我甚至需要最大之前的行。

讓我來舉個例子。該表可以是這樣的:

id  time  depth  
---------------------------- 
1  0   0 
1  10   1 
1  20   2  
2  0   0  
2  10   1 

在這種情況下,它應該返回:

id  time  depth  
---------------------------- 
1  20   2  
2  10   1 

謝謝你這麼多

回答

1

聯接使用子查詢是這樣做的一種方式。

SELECT a.id, a.time, a.depth FROM Table1 a 
INNER JOIN 
    (SELECT id, max(`time`) as mt FROM Table1 WHERE `depth` != 0 GROUP by id) as b 
ON a.id = b.id and a.time = b.mt 
+0

他會在正確的軌道讓你剛剛提出的想法,但我想這個答案只能用'最大返回記錄(時間)'這在他示例數據將是time = 20的1條記錄,但我不知道它背後的邏輯是什麼,以及它的邏輯是什麼,但正如您所看到的,他需要一個查詢,它也返回time = 10的記錄以及 – EhsanT

+1

@EhsanT if你在這個查詢的sqlfiddle中運行這個查詢,你會看到那兩行被返回 – e4c5

+0

我的不好,我完全忽略了'GROUP by' – EhsanT

0

試試這個:

select id,max(time) from test1 where depth<>0 group by id