2017-01-30 7 views
0

あたり最高提出した日付によると、私はテーブルを持っている:MySQLのいずれかを選択し、行ID

id | date_submitted 
1 | 01/01/2017 
1 | 01/02/2017 
2 | 01/03/2017 
2 | 01/04/2017 

私が持っているidごとに1つの行に制限され、それぞれの行を選択するための正しいSQL、探しています最新の値はdate_submittedです。

ので、SQLは、上記の表のために返す必要があります:

id | date_submitted 
1 | 01/02/2017 
2 | 01/04/2017 

クエリがあまりにも、行のすべてのものを選択する必要があります。

ありがとうございました。

+0

あなたは何をしようとしたのですか?これはかなり簡単です。 – user3741598

+0

私は、この質問を無限に尋ねられ、答えが出されたので、この質問を話題として閉じようとしています。いくつかの答えは正しいです。 – Strawberry

答えて

1

あなたはこのように(複数の列は、idとdate_submittedから離れて存在していると仮定した場合)サブクエリ内の各IDの最大の日付を検索し、すべての列とすべての行を取得するには、元のテーブルとそれに参加することができます。

select t.* 
from your_table t 
inner join (
    select id, max(date_submitted) date_submitted 
    from your_table 
    group by id 
) t2 on t.id = t2.id 
and t.date_submitted = t2.date_submitted; 

このクエリは、そのIDに対してdate_submittedがmax date_submittedに等しい複数の行がある場合に備えて、idに対して複数の行を返します。 idごとに1つの行だけが本当に必要な場合、解決策は少し異なります。あなただけのIDと最大日付の使用が必要な場合は

select id, max(date_submitted) date_submitted 
from your_table 
group by id 
+0

このソリューションは私のために働いた、ありがとう。 –

関連する問題