表名  tab 
id          regtime            username 
104001 2009-01-13 10:43:00 ymf021 
104002 2009-01-13 10:43:00 ymf021 
104003 2009-01-13 10:43:00 yddd 
104004 2009-01-13 10:43:00 dfdf1 
104005 2009-01-13 10:43:00 ymf021 
104006 2009-01-13 10:43:00 ymf021 
104007 2009-01-13 10:43:00 yddd1 
104008 2009-01-13 10:43:00 y111 
104009 2009-01-13 10:43:00 ymf021 
104010 2009-01-13 10:43:00 ymdfd21 
104011 2009-01-13 10:43:00 ymf021 
104012 2009-01-13 10:43:00 1333 
104013 2009-01-13 10:43:00 ymf021 
104014 2009-01-13 10:43:00 1333 
104015 2009-01-13 10:43:00 ymf021 
这是表的结构  我想要的结果是  查询username列重复出现2次的则只取其中的2条记录,不重复的则全取
我要的结果是 凡是重复出现2次以上的记录 只取其中的2条,否则全取  结果就是 104001 2009-01-13 10:43:00 ymf021 
104002 2009-01-13 10:43:00 ymf021 
104003 2009-01-13 10:43:00 yddd 
104004 2009-01-13 10:43:00 dfdf1 
104007 2009-01-13 10:43:00 yddd1 
104008 2009-01-13 10:43:00 y111 
104010 2009-01-13 10:43:00 ymdfd21 
104012 2009-01-13 10:43:00 1333 
104014 2009-01-13 10:43:00 1333 
这样的语句怎么写  高手帮下忙

解决方案 »

  1.   

    select *
    from tb A
    where checknum(*) in (select top 2 check(*) from tb where usermname = A.username )
      

  2.   

    服务器: 消息 102,级别 15,状态 1,行 3
    在 '*' 附近有语法错误。
    服务器: 消息 156,级别 15,状态 1,行 3
    在关键字 'check' 附近有语法错误。
      

  3.   


    DECLARE @tab TABLE 
    (
    id INT ,
    regtime DATETIME,
    usermname VARCHAR(10)
    )
    INSERT INTO @tab 
    SELECT 104001, '2009-01-13 10:43:00','ymf021' UNION ALL
    SELECT 104002, '2009-01-13 10:43:00','ymf021' UNION ALL
    SELECT 104003, ' 2009-01-13 10:43:00','yddd' UNION ALL
    SELECT 104004, ' 2009-01-13 10:43:00','dfdf1' UNION ALL
    SELECT 104005, ' 2009-01-13 10:43:00','ymf021' UNION ALL
    SELECT 104006, ' 2009-01-13 10:43:00','ymf021' UNION ALL
    SELECT 104007, ' 2009-01-13 10:43:00','yddd1' UNION ALL
    SELECT 104008, ' 2009-01-13 10:43:00',' y111' UNION ALL
    SELECT 104009, ' 2009-01-13 10:43:00',' ymf021' UNION ALL
    SELECT 104010, ' 2009-01-13 10:43:00',' ymdfd21' UNION ALL
    SELECT 104011, ' 2009-01-13 10:43:00',' ymf021' UNION ALL
    SELECT 104012, ' 2009-01-13 10:43:00','1333' UNION ALL
    SELECT 104013, ' 2009-01-13 10:43:00','ymf021' UNION ALL
    SELECT 104014, ' 2009-01-13 10:43:00','1333' UNION ALL
    SELECT 104015, ' 2009-01-13 10:43:00','ymf021' 
    SELECT * FROM @tab 
      select   *   from   @tab    as   aa   
      where   id   in   (select   top   2   id   from   @tab    where   usermname=aa.usermname)   id          regtime                 usermname
    ----------- ----------------------- ----------
    104001      2009-01-13 10:43:00.000 ymf021
    104002      2009-01-13 10:43:00.000 ymf021
    104003      2009-01-13 10:43:00.000 yddd
    104004      2009-01-13 10:43:00.000 dfdf1
    104005      2009-01-13 10:43:00.000 ymf021
    104006      2009-01-13 10:43:00.000 ymf021
    104007      2009-01-13 10:43:00.000 yddd1
    104008      2009-01-13 10:43:00.000  y111
    104009      2009-01-13 10:43:00.000  ymf021
    104010      2009-01-13 10:43:00.000  ymdfd21
    104011      2009-01-13 10:43:00.000  ymf021
    104012      2009-01-13 10:43:00.000 1333
    104013      2009-01-13 10:43:00.000 ymf021
    104014      2009-01-13 10:43:00.000 1333
    104015      2009-01-13 10:43:00.000 ymf021(15 行受影响)id          regtime                 usermname
    ----------- ----------------------- ----------
    104001      2009-01-13 10:43:00.000 ymf021
    104002      2009-01-13 10:43:00.000 ymf021
    104003      2009-01-13 10:43:00.000 yddd
    104004      2009-01-13 10:43:00.000 dfdf1
    104007      2009-01-13 10:43:00.000 yddd1
    104008      2009-01-13 10:43:00.000  y111
    104009      2009-01-13 10:43:00.000  ymf021
    104010      2009-01-13 10:43:00.000  ymdfd21
    104011      2009-01-13 10:43:00.000  ymf021
    104012      2009-01-13 10:43:00.000 1333
    104014      2009-01-13 10:43:00.000 1333(11 行受影响)
      

  4.   

    DECLARE @tab TABLE 
    (
    id INT ,
    regtime DATETIME,
    usermname VARCHAR(10)
    )
    INSERT INTO @tab 
    SELECT 104001, '2009-01-13 10:43:00','ymf021' UNION ALL
    SELECT 104002, '2009-01-13 10:43:00','ymf021' UNION ALL
    SELECT 104003, ' 2009-01-13 10:43:00','yddd' UNION ALL
    SELECT 104004, ' 2009-01-13 10:43:00','dfdf1' UNION ALL
    SELECT 104005, ' 2009-01-13 10:43:00','ymf021' UNION ALL
    SELECT 104006, ' 2009-01-13 10:43:00','ymf021' UNION ALL
    SELECT 104007, ' 2009-01-13 10:43:00','yddd1' UNION ALL
    SELECT 104008, ' 2009-01-13 10:43:00',' y111' UNION ALL
    SELECT 104009, ' 2009-01-13 10:43:00',' ymf021' UNION ALL
    SELECT 104010, ' 2009-01-13 10:43:00',' ymdfd21' UNION ALL
    SELECT 104011, ' 2009-01-13 10:43:00',' ymf021' UNION ALL
    SELECT 104012, ' 2009-01-13 10:43:00','1333' UNION ALL
    SELECT 104013, ' 2009-01-13 10:43:00','ymf021' UNION ALL
    SELECT 104014, ' 2009-01-13 10:43:00','1333' UNION ALL
    SELECT 104015, ' 2009-01-13 10:43:00','ymf021' select   *   from   @tab    as   aa   
    where   id   in   (select   top   2   id   from   @tab    where   usermname=aa.usermname)   
    ORDER BY [usermname]id          regtime                 usermname
    ----------- ----------------------- ----------
    104008      2009-01-13 10:43:00.000  y111
    104010      2009-01-13 10:43:00.000  ymdfd21
    104011      2009-01-13 10:43:00.000  ymf021
    104009      2009-01-13 10:43:00.000  ymf021
    104012      2009-01-13 10:43:00.000 1333
    104014      2009-01-13 10:43:00.000 1333
    104004      2009-01-13 10:43:00.000 dfdf1
    104003      2009-01-13 10:43:00.000 yddd
    104007      2009-01-13 10:43:00.000 yddd1
    104001      2009-01-13 10:43:00.000 ymf021
    104002      2009-01-13 10:43:00.000 ymf021(11 行受影响)