MySQL游标循环取出空值的BUG
早上同事要我写个MySQL去除重复数据的SQL,想起来上次写过一篇 MySQL去除重复数据 的博客,使用导入导出加唯一索引实现的,但是那种方式对业务影响较大,所以重新写一个存储过程来删重复数据,这一写就写了一个上午,这种BUG确实是很令人沮丧和浪费时间的。 这里把流程简单的描述一下,删重复数据的逻辑很简单: 1.根据重复判断条件找出重复记录的最小主键(一般是ID列)。 2.在符合重复条件的记录中,把主键大于最小主键的记录全部删掉即可。 假设我有如下表,需要删除start_time和end_time都一样的重复记录。 那么存储过程如下:(需要注意的是mysql存储过程和函数的创建对于缩进的要求极为严格,同样的代码如果直接copy很可能因为缩进的问题出现语法错误,要注意这一点。) DELIMITER // DROP PROCEDURE IF EXISTS Del_Dup_FOR_TEST; CREATE PROCEDURE Del_Dup_FOR_TEST() BEGIN DECLARE min_id INT; DECLARE v_start_time,v_end_time DATETIME; DECLARE v_count INT; DECLARE done INT DEFAULT 0; DECLARE my_cur CURSOR FOR SELECT start_time,end