表 g产品编号 注册号 日期
0001 060503 20080302
0035 030210 20060203
0001 090203 20090603
0001 020210 20030201
0035 065201 20050201
如何使产品编号每个产品只把留任意一行
产品编号 注册号 日期
0001 060503 20080302
0035 030210 20060203
0001 060503 20080302
0035 030210 20060203
0001 090203 20090603
0001 020210 20030201
0035 065201 20050201
如何使产品编号每个产品只把留任意一行
产品编号 注册号 日期
0001 060503 20080302
0035 030210 20060203
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 行)
*/
求解
--------------------------------------------------那很简单, 条件用‘注册号’
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 产品编号)