本帖最后由 huaier200 于 2011-07-04 14:17:05 编辑

解决方案 »

  1.   

    对你选出的结果,再一次select distingct
      

  2.   

    distinct只能保证那个字段唯一,如果你后面带着的字段出现重复,他肯定也要出现重复数据啊。再说,你应该先distinct,然后自己用row_number分配行号,你这样没有意义最后,你这方法的效率应该很低。
      

  3.   

    注明一下:
    1、NOT IN( 2)  2代表User_Role.rID=2
    2、
    rownum uID      uName  uAccount uPWD
    1 3 张三 jz 123 NULL NULL NULL NULL NULL  
    2 4 李四 ls ss NULL NULL NULL NULL NULL  
    3 4 李四 ls ss NULL NULL NULL NULL NULL  
      

  4.   

    各位兄弟,我涉水浅,还麻烦以我的SQL为基础示例说明一下~
      

  5.   

    rownum不一样 所以distinct还是不起作用
      

  6.   

    但是我这样也不行:
    DISTINCT Users.[uID] 
      

  7.   

    你先distinct,Users.[uID]        ,[uName]        
    ,[uAccount]        ,[uPWD]        
    ,[uCreationDate]   ,[uJoinDate]        
    ,[uAddress]       ,[uTel]        
    ,[uEmail]         ,[uSN]        
    ,[uStatus]        ,[uSex]        
    ,[uBirthday]      ,[uContact]        
    ,[uContactTel]    ,[uIsAppUser]        
    ,[uIsAdmin]       
    这一堆,除非这一堆出来的是唯一的,那么你的上面那一堆才有可能正确,真是前贴,看你后面join了一个role表,感觉应该是role表的里面有重复的userid,对应了不同的角色,你应该看看。
      

  8.   

    你先生成rownumber,那么所有记录都不会重复了。
    先distinct 然后再rownumberDECLARE @t TABLE(NAME Nvarchar(100))
    INSERT @t
    SELECT N'电脑' UNION ALL
    SELECT N'电脑' UNION ALL
    SELECT N'电脑' UNION ALL
    SELECT N'电脑' UNION ALL
    SELECT N'电脑' UNION ALL
    SELECT N'电脑' UNION ALL
    SELECT N'电脑' UNION ALL
    SELECT N'电脑' UNION ALL
    SELECT N'冰箱' UNION ALL
    SELECT N'冰箱' UNION ALL
    SELECT N'彩电' UNION ALL
    SELECT N'吹风机' UNION ALL
    SELECT N'笔记本' UNION ALL
    SELECT N'电脑桌' UNION ALL
    SELECT N'打印机' UNION ALL
    SELECT N'内存' UNION ALL
    SELECT N'硬盘'SELECT * FROM @t;WITH    a AS ( SELECT DISTINCT
                            ROW_NUMBER() OVER ( ORDER BY Name DESC ) AS rn ,
                            NAME
                   FROM     ( SELECT    Name
                              FROM      @t
                            )N
                 )
        SELECT  rn ,
                NAME
        FROM    a
        WHERE   rn > 2
                AND rn < 5
      

  9.   

    ……让楼主给带沟里了
    WITH    a AS ( SELECT 
                            ROW_NUMBER() OVER ( ORDER BY Name DESC ) AS rn ,
                            NAME
                   FROM     ( SELECT  DISTINCT  Name
                              FROM      @t
                            )N
                 )
        SELECT  rn ,
                NAME
        FROM    a
        WHERE   rn > 2
                AND rn < 5
      

  10.   

    谢谢各位,我最后用的方法是 group by