我有一个数据表,有一个字段为QQ,就是用户注册的QQ号,我想这样排列数据,QQ字段重复最多的排前面。
因为有很多帐号是经常发广告的,每天注册不同的帐号来发广告,但是QQ号填写的却是一个,我想一次性把这些帐号全部清理出来,有很多QQ,该如何实现呢?这样,QQ字段重复记录越多的,就会排前面,我就很清楚的可以找出哪些QQ号是来发广告的,我就可以修改程序,下次这些人注册的时候,直接屏蔽帐号或者不让其注册了,因为对方是注册机。注意:不是一两个QQ,而是大量的,所以我人工检查有点麻烦。

解决方案 »

  1.   

    比如有两个人A和B他们经常注册不同的帐号到我网站上发帖子,但是他们注册的时候填写的QQ都是各自的客服QQ这样经过长时间的积累,数据表里字段 QQ 就有很多条他们的记录比如A注册了200个帐号,QQ字段就有200个他的QQ号存在,B注册了150个帐号,QQ字段就有150个字段我想实现排序的时候,把A的所有帐号排前面,因为他的QQ号重复最多。
      

  2.   

    简单点就是select * from 表 t
    order by (
    select count(*) from 表 where 帐号=t.帐号
    )
      

  3.   

    select * from (select id,[count]=count(*) from ta group by id ) K order by [count]
      

  4.   


    declare @t table
    (
    account varchar(20),
    qq varchar(10)
    )insert @t select 'abc1',123456
    union all select 'abc2',123456
    union all select 'abc3',123456
    union all select 'bbb',23456
    union all select 'ccc2',3546789
    union all select 'bbb',23456
    union all select 'ccc1',3546789
    union all select 'ddd',46557877select
    a.*
    from @t a
    join(
    select
    qq,
    count(*) as countnum
    from @t
    group by qq
    )b
    on b.qq = a.qq
    order by b.countnum desc/**
    abc1 123456
    abc2 123456
    abc3 123456
    bbb     23456
    bbb     23456
    ccc1 3546789
    ccc2 3546789
    ddd     46557877
    **/
      

  5.   

    select * from tb a
    order by (select count(*) from tb where QQ=a.QQ)
      

  6.   


    SELECT *
    FROM (SELECT qq, [count] = COUNT(*)
            FROM dv_user
            GROUP BY qq) K
    ORDER BY [count] DESC这样就对了,谢谢!