问题描述:从mainHour表里面,针对每个UID,把time最大的的那条记录提取出来!
例如有如下两条记录:
id uid time border
1 1234 12:45 MP3
2 1234 15:23 ring
………………
想得到的结果记录是:第2条。即UID=1234的最后时间是15:23,此时所对应的BORDER是ring;有人使用如下语句得到结果,经过验证,似乎也是正确的:
SELECT * FROM `mainHour` group by uid having max(time)=time;不能明白的是:having针对的是组,这里怎么可以针对记录进行筛选呢? 这条语句是怎么执行的呀?先谢谢了!!!
例如有如下两条记录:
id uid time border
1 1234 12:45 MP3
2 1234 15:23 ring
………………
想得到的结果记录是:第2条。即UID=1234的最后时间是15:23,此时所对应的BORDER是ring;有人使用如下语句得到结果,经过验证,似乎也是正确的:
SELECT * FROM `mainHour` group by uid having max(time)=time;不能明白的是:having针对的是组,这里怎么可以针对记录进行筛选呢? 这条语句是怎么执行的呀?先谢谢了!!!
不是标准的SQL语句
select a.* from mainHour a
inner join
(SELECT uid,max(time) as ma FROM `mainHour` group by uid) b
on a.uid=b.uid and a.time=b.ma