mysql存储过程删除重复记录
为什么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存储过程删除重复记录相关推荐
- mysql查询删除重复记录查询_mysql怎么查询和删除重复记录
查找所有重复标题的记录: SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > ...
- 解决Mysql中删除重复记录的问题
题记 本文主要介绍Mysql数据库表中,如何删除相同索引值.更新日期较早的记录行. 1.相同记录的由来 以Mysql为例,根据表的设计原则,表中不可能存在两条完全相同的记录. 第一范式(1NF):字段 ...
- mysql+存储过程+删除重复数据_mysql 存储过程 删除重复
DELIMITER $$ CREATE PROCEDURE `delRepeatCA`() BEGIN DECLARE tally INT DEFAULT 0; SELECT COUNT(rs.c_C ...
- MYSQL中删除重复记录
这是个老生常谈的话题,我们在sql中删除一条重复的记录我们可以[以用户表user为例,包含id,name,value三个字段信息]: delete from 表 where id not in (se ...
- mysql语句中怎么去重复_mysql中删除重复记录sql语句
在sql中我们经常会碰到有重复的一些数据,下面我来介绍在mysql中删除重复记录的多种方法,有需要的朋友可参考参考. 删除重复记录方法一: 1. 新建一个临时表 代码如下 复制代码 create ta ...
- mysql删除重复文章标题_MySQL中查询、删除重复记录的方法大全
前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: 一.查找重复记录 1.查找全部重复记录 2.过滤重复记录( ...
- mysql删除重复的判断_MySQL中查询、删除重复记录一共有多少种方法?
前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: select title,count(*) as coun ...
- mysql插入数据与删除重复记录的几个例子(收藏)
mysql插入数据与删除重复记录的几个例子 12-26shell脚本实现mysql数据的批量插入 12-26mysql循环语句插入数据的例子 12-26mysql批量插入数据(insert into ...
- mysql scrapy 重复数据_MySQL大数据量表中删除重复记录
MySQL大数据量表中删除重复记录 最近工作中需要抓取大量新闻,抓取的数据中由于一些原因存在一些重复数据,而整个数据表的记录数接近10万条,大小接近1个G,又在我自己的渣渣本本上,查询速度十分不理想, ...
最新文章
- Nodejs Express dockerfile最佳实践
- Mysql基础运维及复制架构——PRIT非完整恢复
- 【解决方案】“‘javac’不是内部或外部命令,也不是可运行的程序或批处理文件”
- java.util.concurrent包详细分析--转
- 【BZOJ 1528】 1528: [POI2005]sam-Toy Cars (贪心+堆)
- mysql replication 配置_MySQL Replication配置主从的教程
- 从入侵到变现——“黑洞”下的黑帽SEO分析
- 说说 Spring 的事务同步管理器
- linux网卡IO,浅谈Linux 网络 I/O 模型简介(图文)
- 0018计算机基础知识,0018 0019计算机应用基础上机试题
- Oracle10g数据库的树立
- 腾讯这套SpringMvc面试题你了解多少?(面试必备)
- MYSQL支持事务吗?
- python%20是什么运算
- 国人不能再过度迷信开源软件
- Linux 十四 修改文件操作权限 用户文件权限详解
- 十六进制颜色值对照表
- OpenCv——OpenCv2 Mat创建、复制、释放
- 2023年全国最新机动车签字授权人精选真题及答案14
- PHP GD库文字生成图片及图片拼接