表结构如下
bid        add_time           uid
2121      2010-02-02         0203
6565    2010-05-03           0203
31      2010-01-02           0204
5454      2010-12-12         0202
想得到如下数据
bid        add_time           uid
6565    2010-05-03           0203
31      2010-01-02           0204
5454      2010-12-12         0202根据uid只取一条记录,重复的不算。取的记录根据add_time,取最大的日期
求解~~

解决方案 »

  1.   

    select * from table where bid in (select bid from table order by add_time desc) group by uid order by bid asc
    试一试看看
      

  2.   

    select * from table where bid in (SELECT max(add_time), bid FROM table group by uid)
      

  3.   

    报错:Operand should contain 1 column(s)我现在先过滤重复的ID  在判断Bid.
      

  4.   

    SELECT max(add_time) max_time, bid, uid FROM table group by uid
      

  5.   

    哥们,谢谢了。。是我需要的。。
    为什么MYSQL不能再distinct后面跟*号呢     这样查询数据起来挺麻烦的
      

  6.   

    SELECT distinct(字段) FROM ...
      

  7.   

    我的意思是 去除重复的  并查询出所有的信息。
    SELECT distinct(字段) FROM ...这样只能查询去除字段的信息。反正效果实现了 等下再开贴细问吧
      

  8.   

    --1
    select * from tb t where add_time=(select max(add_time) from tb uid=t.uid)
    --2
    select * from tb t where 
    not exists
    (
        select 1 from tb uid=t.uid and add_time>t.add_time
    )
      

  9.   

    5楼的查询出来的其实也不对的,仔细看,虽然得到了最大的add_time,但是id并非最大add_time的id
    应该为:
    SELECT * FROM ( SELECT * FROM tb ORDER BY add_time DESC) tt GROUP BY uid
      

  10.   

    多谢大家给的思路这样的表数据
    我想得到add_time最大的那条。同时去除重复的username开始我的几条语句都无法达到这个效果
    SELECT DISTINCT userid  FROM tbl_brand_audit ORDER BY add_time DESC
    SELECT COUNT(DISTINCT userid) AS num  FROM tbl_brand_audit 现在只有1个username,有多个username的时候就报错了
      

  11.   

    如果 id是主键而且是自动递增的,add_time是插入记录时的那个时间。
    那应该用id 来做
    select * from tbl_brand_audit a
    where not exists (select 1 from tbl_brand_audit b where b.userid = a.userid and b.id>a.id)