表  g产品编号    注册号    日期
0001       060503     20080302
0035       030210     20060203
0001       090203     20090603
0001       020210     20030201
0035       065201     20050201
如何使产品编号每个产品只把留任意一行
产品编号    注册号    日期
0001       060503     20080302
0035       030210     20060203

解决方案 »

  1.   

    create table G(产品编号 varchar(10),注册号 varchar(10),日期 varchar(8))
    insert into G values('0001',       '060503',     '20080302')
    insert into G values('0035',       '030210',     '20060203')
    insert into G values('0001',       '090203',     '20090603')
    insert into G values('0001',       '020210',     '20030201')
    insert into G values('0035',       '065201',     '20050201')
    go
    delete from G where 日期 not in (select min(日期) from G group by 产品编号)
    select * from G
    drop table G/*
    产品编号   注册号      日期       
    ---------- ---------- -------- 
    0001       020210     20030201
    0035       065201     20050201(所影响的行数为 2 行)
    */
      

  2.   

    大哥,如果日期有很多重复的怎么办,这样就还会出现很多重复记录,实际情况也是这样 的
    求解
    --------------------------------------------------那很简单, 条件用‘注册号’
    sorry,借用乌龟哥的sql,更改为
    delete from G where 注册号 not in (select min(注册号) from G group by 产品编号)
    如果还不行再换最大的‘注册号’
    delete from G where 注册号 not in (select max(注册号) from G group by 产品编号)