怎样删除重复的行(mssql)
我有一个表,只有Fkey和code两个字段都是char(8),没有唯一标识,我想要删除其中重复的行怎么办?
能告诉我一个简单的办法吗?
问题点数:20、回复次数:9Top
1 楼xwyliu(大象)回复于 2001-11-30 13:57:49 得分 0
但是要是重复的含只保留一行Top
2 楼Haiwer(海阔天空)回复于 2001-11-30 14:02:02 得分 5
select ditinct Fkey,code into TableName1 from TableName
go
drop table TableName
go
sp_rename 'TableName1','TableName'
go
Top
3 楼sunyanbin(太阳)回复于 2001-11-30 14:02:23 得分 10
insert into #temp
select distinct fkey,code form tablename
delete tablename
insert into tablename
select * from #tempTop
4 楼mmzxg(超级笨蛋)回复于 2001-11-30 14:03:39 得分 0
楼上说的对Top
5 楼xwyliu(大象)回复于 2001-11-30 14:11:21 得分 5
不错,是个好办法,但是如果表中有其他结构,就不能保留了
太阳说的办法好,可以保留结构。
但是有没有这样的存储过程呢?Top
6 楼vfp_database(数据库)回复于 2001-11-30 14:15:49 得分 0
Haiwer(海阔天空)的答案最好。Top
7 楼sunyanbin(太阳)回复于 2001-11-30 14:16:57 得分 0
可以自己写一个存储存储过程
Top
8 楼Haiwer(海阔天空)回复于 2001-11-30 14:31:14 得分 0
呵呵,如大象所说
我的会丢掉一些东东!
Top
9 楼xwyliu(大象)回复于 2001-11-30 14:39:33 得分 0
我的存储过程写好了,大家看看怎么样?
IF EXISTS (SELECT name
FROM sysobjects
WHERE name = N'mp_delete_repeat'
AND type = 'P')
DROP PROCEDURE mp_delete_repeat
GO
CREATE PROCEDURE mp_delete_repeat
@TableName sysname=null
AS
if not exists(select name from sysobjects where name=@TableName and type='U')
return(1)
exec('select distinct * into #temp from '+@TableName)
exec('delete '+@TableName)
exec('insert into '+@TableName+'select * from #temp')
GO
Top




