为什么80%的码农都做不了架构师?>>>   

之前在写删除数据库重复记录的时候没有用存储过程代码如下:

表(book)字段

(id   ,    b_name,   b_describe,     b_author)

1   a,    b,     c

2   a,    b,     c

3   e,    r,     h

4   e,    r,     h

5   a,    r,     c

delete from book

where

b_name in (select t2.b_name from book t2 group by t2.b_name,t2.b_describe,t2.b_author having COUNT(*)>1)

and b_describe age in (select t2.b_describe from book t2 group by t2.b_name,t2.b_describe,t2.b_author  having COUNT(*)>1)

and b_author age in (select t2.b_author from book t2 group by t2.b_name,t2.b_describe,t2.b_author  having COUNT(*)>1)

and id not in(select MIN(t2.id) from from book t2 group by t2.b_name,t2.b_describe,t2.b_author  having COUNT(*)>1)

使用上面的代码可以把完全重复记录删除,但同时也会把第5条记录删除;

后来就改用存储过程的方法如下:

CREATE PROCEDURE del_pointer()
BEGIN
 /* 定义变量一 */
    DECLARE paramId int;
    DECLARE paramName VARCHAR(16);
    DECLARE paramDes VARCHAR(16);
    DECLARE paramAut VARCHAR(16);
    DECLARE  _done int default 0;
 /* 定义光标 */
    DECLARE _Cur CURSOR FOR
            SELECT id,b_name,b_describe,b_author FROM my_book GROUP BY b_name,b_describe,b_author HAVING COUNT(*)>1;
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET _done = 1;#错误定义,标记循环结束
 /* 打开光标 */
    OPEN _Cur;
     FETCH _Cur INTO paramId, paramName, paramDes, paramAut;
   /* 循环执行 */
       WHILE ( _done <> 1) DO
         DELETE from my_book WHERE id<>paramId and b_name=paramName and b_describe=paramDes and b_author=paramAut;
        /*游标向下走一步*/
        FETCH _Cur INTO paramId, paramName, paramDes, paramAut;
      END WHILE;
 /*关闭光标*/
    CLOSE _Cur;
END;

这样就不会删除上面第5条记录,只是今天刚写的,所以记下了,希望多多指点!

转载于:https://my.oschina.net/zjds/blog/168042

mysql存储过程删除重复记录相关推荐

  1. mysql查询删除重复记录查询_mysql怎么查询和删除重复记录

    查找所有重复标题的记录: SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > ...

  2. 解决Mysql中删除重复记录的问题

    题记 本文主要介绍Mysql数据库表中,如何删除相同索引值.更新日期较早的记录行. 1.相同记录的由来 以Mysql为例,根据表的设计原则,表中不可能存在两条完全相同的记录. 第一范式(1NF):字段 ...

  3. mysql+存储过程+删除重复数据_mysql 存储过程 删除重复

    DELIMITER $$ CREATE PROCEDURE `delRepeatCA`() BEGIN DECLARE tally INT DEFAULT 0; SELECT COUNT(rs.c_C ...

  4. MYSQL中删除重复记录

    这是个老生常谈的话题,我们在sql中删除一条重复的记录我们可以[以用户表user为例,包含id,name,value三个字段信息]: delete from 表 where id not in (se ...

  5. mysql语句中怎么去重复_mysql中删除重复记录sql语句

    在sql中我们经常会碰到有重复的一些数据,下面我来介绍在mysql中删除重复记录的多种方法,有需要的朋友可参考参考. 删除重复记录方法一: 1. 新建一个临时表 代码如下 复制代码 create ta ...

  6. mysql删除重复文章标题_MySQL中查询、删除重复记录的方法大全

    前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: 一.查找重复记录 1.查找全部重复记录 2.过滤重复记录( ...

  7. mysql删除重复的判断_MySQL中查询、删除重复记录一共有多少种方法?

    前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: select title,count(*) as coun ...

  8. mysql插入数据与删除重复记录的几个例子(收藏)

    mysql插入数据与删除重复记录的几个例子 12-26shell脚本实现mysql数据的批量插入 12-26mysql循环语句插入数据的例子 12-26mysql批量插入数据(insert into ...

  9. mysql scrapy 重复数据_MySQL大数据量表中删除重复记录

    MySQL大数据量表中删除重复记录 最近工作中需要抓取大量新闻,抓取的数据中由于一些原因存在一些重复数据,而整个数据表的记录数接近10万条,大小接近1个G,又在我自己的渣渣本本上,查询速度十分不理想, ...

最新文章

  1. Nodejs Express dockerfile最佳实践
  2. Mysql基础运维及复制架构——PRIT非完整恢复
  3. 【解决方案】“‘javac’不是内部或外部命令,也不是可运行的程序或批处理文件”
  4. java.util.concurrent包详细分析--转
  5. 【BZOJ 1528】 1528: [POI2005]sam-Toy Cars (贪心+堆)
  6. mysql replication 配置_MySQL Replication配置主从的教程
  7. 从入侵到变现——“黑洞”下的黑帽SEO分析
  8. 说说 Spring 的事务同步管理器
  9. linux网卡IO,浅谈Linux 网络 I/O 模型简介(图文)
  10. 0018计算机基础知识,0018 0019计算机应用基础上机试题
  11. Oracle10g数据库的树立
  12. 腾讯这套SpringMvc面试题你了解多少?(面试必备)
  13. MYSQL支持事务吗?
  14. python%20是什么运算
  15. 国人不能再过度迷信开源软件
  16. Linux 十四 修改文件操作权限 用户文件权限详解
  17. 十六进制颜色值对照表
  18. OpenCv——OpenCv2 Mat创建、复制、释放
  19. 2023年全国最新机动车签字授权人精选真题及答案14
  20. PHP GD库文字生成图片及图片拼接

热门文章

  1. python3 设置默认编码_Python3的字符编码乱码问题解决思路
  2. java string string_深入理解Java:String
  3. 微信小程序图片放大预览效果的实现
  4. 2021-01-07 matlab数值分析 线性方程组的迭代解法 高斯-赛德尔迭代法
  5. python 获取文件后缀名的方法
  6. access2013数据库实验笔记_医学科研实验基础知识笔记(十):甲基化
  7. TCP 滑动窗口协议
  8. 文献管理软件Mendeley的缺陷 (更正,增补)
  9. 用Python和OpenCV提取颜色直方图特征
  10. Word中以交叉引用的方式插入参考文献