问题描述:从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针对的是组,这里怎么可以针对记录进行筛选呢? 这条语句是怎么执行的呀?先谢谢了!!!

解决方案 »

  1.   

    SELECT * FROM `mainHour` group by uid having max(time)=time
    不是标准的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
      

  2.   

    忘了说了,运行环境是MYSQL;我也感觉不太标准,不知道它是怎么实现的,所以不敢用,可是说不出哪里错了。能在帮我解释下么?