データベースから必要な行を取得する最良の方法を見つけようとしています。
データベース テーブル:
id user cat time
1 5 1 123
2 5 1 150
3 5 2 160
4 5 3 100
DISTINCT cat ... WHERE user=5大切に受け取りたいMAX time。どうすれば効率的にそれを行うことができますか?
で集計関数を使用する必要がありますGROUP BY。
select user, cat, max(time) as Time
from yourtable
group by user, cat
デモで SQL Fiddle を参照してください
列を含めたい場合はid、サブクエリを使用できます。
select t1.id,
t1.user,
t1.cat,
t1.time
from yourtable t1
inner join
(
select max(time) Time, user, cat
from yourtable
group by user, cat
) t2
on t1.time = t2.time
and t1.user = t2.user
and t1.cat = t2.cat
SQL Fiddle with Demoを参照してください。サブクエリを使用して、各行idで返される値がmax(time)正しい ID であることを確認しました。