id(int 主键  自增长)    name  
1     1
2     2             
3     3
4     4 
5     4
现在想得到的是name中不能有重复的,和他对应的主键,也就是
id(int 主键  自增长)    name  
1     1
2     2             
3     3
4     4 
或者是
id(int 主键  自增长)    name  
1     1
2     2             
3     3
5     4
请问怎么写呢?

解决方案 »

  1.   

    select * from tablename t
    where id=(select min(id) from tablename where name=t.name)
      

  2.   

    把min改成max就你要的另外一种结果.
      

  3.   


    create table cn
    (id int identity(1,1) not null, 
     name int
     constraint pk_cn primary key (id)
    )insert into cn(name)
     select 1 union all
     select 2 union all         
     select 3 union all
     select 4 union all
     select 4
    select id,name from
    (select id,name,
            row_number() over(partition by name order by id) 'rn'
     from cn) t
    where t.rn=1/*
    id          name
    ----------- -----------
    1           1
    2           2
    3           3
    4           4(4 row(s) affected)
    */
    select id,name from
    (select id,name,
            row_number() over(partition by name order by id desc) 'rn'
     from cn) t
    where t.rn=1/*
    id          name
    ----------- -----------
    1           1
    2           2
    3           3
    5           4(4 row(s) affected)
    */