select distinct * from table1 A 
 where cast(field1 as char) + cast(field3 as char) in 
  (select top 2 cast(field1 as char) + cast(field3 as char) from table1
     where field2 = A.field2)

解决方案 »

  1.   

    select distinct * from table1 A 
     where cast(field1 as char) + cast(field3 as char) in 
      (select top 2 cast(field1 as char) + cast(field3 as char) from table1
         where field2 = A.field2)
      

  2.   


    select distinct * from table1 A 
     where cast(field1 as varchar) + ','+cast(field3 as varchar) in 
      (select top 2 cast(field1 as varchar) +',' + cast(field3 as varchar) from table1
         where field2 = A.field2)
      

  3.   

    不好意思,忘记告诉大家,我使用sql server 6.5
    不支持top 的,郁闷,还有别的办马?
      

  4.   

    begin tran
    create table tb(field1 int,field2 int,field3 int)
    insert into tb(field1,field2,field3) values(1,1,2)
    insert into tb(field1,field2,field3) values(2,1,3)
    insert into tb(field1,field2,field3) values(1,1,3)
    insert into tb(field1,field2,field3) values(1,2,4)
    insert into tb(field1,field2,field3) values(2,2,5)
    insert into tb(field1,field2,field3) values(3,3,5)select distinct * from tb a 
     where cast(field1 as varchar) + '-'+cast(field3 as varchar) in 
      (select top 2 cast(field1 as varchar) +'-' + cast(field3 as varchar) from tb
         where field2 = a.field2)
    rollback
      

  5.   

    select identity(int,1,1)id,* into #temp from table
    select * from #temp aa where (select count(*) from #temp where field2=aa.field2 and id<=aa.id)<=2
      

  6.   

    select * from
    (select (select count(*) from 表 where field2=a.field2 and field1<=a.field1) as cx,* from 表 a )b
    where b.cx<=2
      

  7.   

    select * from
    (select (select count(*) from 表 where field2=a.field2 and field1<=a.field1) as cx,* from 表 a )b
    where b.cx<=2
      

  8.   

    谢谢大家的回复,我最后放弃了这个功能,因为我的table 里大概有上千万
    条的记录,效率太低了,tj_dns(愉快的登山者) 和CrazyFor(蚂蚁)、zjcxc(邹建)
     在前面给的方法,在sql server2000里边应该是安逸的很了,
    CrazyFor(蚂蚁) 在后面给的方法应该是相当有效的了,
    happydreamer(小黑-不懂的太多)的思路应该是和CrazyFor(蚂蚁)的基本
    相同,但是我觉得使用临时表更清晰,而且效率也不见得比一条语句低,
    你们认为呢?好了,再次谢谢大家。