2016-11-18 3 views
1

私はMySQLで次の表を持っている場合、MySQLを選択:MAXヴァルやその他の条件

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

Aいただきありがとうございます、それを行うための一つの方法です。

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これをsqlfiddleで実行し、この2つの行が返されることを確認します – e4c5

+0

私の悪い、私は完全に 'GROUP BY'を無視しました – EhsanT

0

これを試してみてください:

select id,max(time) from test1 where depth<>0 group by id 
関連する問題