1
我想弄清楚从数据库中获取所需行的最佳方法。mysql提取最大值的行
数据库表:
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
值。我应该如何有效地做到这一点?
我想弄清楚从数据库中获取所需行的最佳方法。mysql提取最大值的行
数据库表:
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
如果要包括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。我使用子查询来确保每个max(time)
行返回的id
值是正确的ID。
辉煌,第一个例子适合我:)谢谢! – fshock 2013-03-19 16:31:00
@fshock很高兴它的作品! :) – Taryn 2013-03-19 16:33:14