利用游标删除sql数据库表重复记录

来源:互联网 发布:怎样利用网络挣钱 编辑:程序博客网 时间:2024/04/30 19:45

        在很多情况下,我们需要删除的记录不仅仅是完全一样的记录,而是根据某一特定字段,只在这个字段出现重复就需要把这条字段删除,前面的博文给出了通过添加外置字段grbh(个人编号)来实现删除的目的,但这种方式还是比较麻烦一些,下面讲述利用游标方式直接将不重复记录写进另一个表中。

      实验数据:源数据表shiyan003,新表temp001

      实验要求:两个表的字段设置要一样

      实验结果:shiyan003中的不复复记录写入到表temp001

      Shiyan003记录如下:

Temp001的结构跟shiyan003一样,字段设置如下:

Temp001需要新建,当然表记录为空:

命令如下:

 

DECLARE Cursor_Title CURSOR FOR SELECT distinct sfzhm FROM shiyan003OPEN Cursor_Titledeclare @str varchar(50)FETCH NEXT FROM Cursor_Title Into @strWHILE @@FETCH_STATUS = 0BEGIN      insert into temp001 select top 1 * from shiyan003 where sfzhm=@str   FETCH NEXT FROM Cursor_Title Into @strENDCLOSE Cursor_TitleDEALLOCATE Cursor_Title

 

在“查询分析器”程序运行如下图

大家可以看到,“影响的行数为1行”一共出现了7次,即一共有7条不重复记录写入了新表temp001当中,结果如下:


        跟源数据表shiyan003对照一下:去掉了grbh001的一条完全重复记录,0020030043条不完全重复记录,而这3条只在sfzhm字段重复即认作重复,达到了实验结果。

       需要说明的是,此操作并不是直接在源数据表shiyan003上作删除,所以的shiyan003表记录没有变化。

原创粉丝点击