求一复杂又简单的Sql文, 请大家多指教
有一表   Id   Name    
                      1      cj1    
                      1      cj    
                      1      cj2    
                      2      gp 
                      3      zs      
 我要查询所以的记录,但是如果记录中Id字段的值相等,则取Id字段值相等的第一条记录。(注意:Id不是主键,如果Id值相同,取第一条记录)      
 比如   想获得的查询结果为    
                Id   Name 
                1      cj1    
                2      gp 
                3      zs      
 我有一个Sql文   select   Id,Min(Name)   from   table1   group   by   Id   ,它能获得不同Id的记录值。但不能保证,如果Id字段值相等,取相等的第一条记录。      
 请大家多指教!
------解决方案--------------------create table t(Id int,Name varchar(10)) 
 insert t select 1, 'cj1 ' 
 union all select 1, 'cj ' 
 union all select 1, 'cj2 ' 
 union all select 2, 'gp ' 
 union all select 3, 'zs '   
 select Id,Name from t a 
 where Name = ( select top 1 Name from t b where b.Id = a.Id)   
 drop table t   
 Id          Name        
 ----------- ----------  
 1           cj1 
 2           gp 
 3           zs