一个用户表user
一个发帖表log
一个用户有多个发帖,关联:userid=loguserid
列出用户名和最新发表的一个帖子,用户的排序按帖子时间排,
select * from user left join log on userid=loguserid如果这样写呢帖子有多少就多少行,太重复了,我只按用户多少显示怎么写?

解决方案 »

  1.   

    N=1参考下贴中的多种方法http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
    [征集]分组取最大N条记录方法征集,及散分....
      

  2.   

    select *
    from (
    select * 
    from user left join log on userid=loguserid
    order by userid,帖子时间 desc
    ) t
    group by userid
      

  3.   

    select * 
    from user a left join log b on a.userid=b.loguserid
    where not exists (
    select 1 from log
    where loguserid=b.loguserid
    and 帖子时间>b.帖子时间
    )
      

  4.   

    哪个效率高一点?因为帖子很多,如果先left join所有帖了的表再处理就很慢,