我建立一个表item,无主键,如下(包括记录的行号):
item_no item_name
1 001 张三
2 001 张三
我现在要删除行号为2的记录,这是一个问题.还有一个问题就是我如何得出一个表中的重复记录并且只保留一条记录.请大哥大姐们指点,我是新手.
--测试表
declare @tablename table(item_no char(3),item_name varchar(20))
insert into @tablename
select 001,张三 union all
select 001,张三
--只保留不同行
select distinct * into #
from @tablename
delete from @tablename
insert into @tablename
select * from #
drop table #
select * from @tablename
--删除2的记录
select id=identity(int,1,1),* into #
from @tablename
delete from @tablename
insert into @tablename
select item_no,item_name from # where id<>2
drop table #
select * from @tablename
上面的方法可以事先你的要求,只不过是亡羊补牢,建议你还是在建表的时候建一个主键,或者建一个唯一的索引,这样对你的数据维护很又帮助。
select count(*),item_no from item group by item_no having count(*)>1