select name,if(friend.userid is null,0,count(*)) as num from user left join friend 
on user.userid=friend.userid group by user.userid order by num desc试试行不行

解决方案 »

  1.   

    可以在User表里加上联系人数目的字段....添加删除联系人时处理
      

  2.   

    select a.name,a.id,
    (select count(id) from friend where userid=a.id or friendid=a.id) as num
    from user a order by num desc
      

  3.   

    select a.userid,user.name,a.count from (select useruid,count(*) count from friend group by userid) a,user
    where a.userid=user.userid