使用游标的方式删除表中相同的记录,并只留下其中一条
来源:互联网 发布:js弹出div窗口 编辑:程序博客网 时间:2024/05/22 14:02
km_tbl_grantdetail 订单表中的存在多条GrantMasterID, SongID相同的记录,影响统计和显示。需要删除重复的记录,只留下其中一条。
这个表中的数据有百多万条,使用Group By 的方法速度太慢。特用游标,速度快。
DROP PROCEDURE IF EXISTS grantDetailCursorX;
CREATE PROCEDURE grantDetailCursorX()BEGIN
DECLARE oldGrantMasterID, curGrantMasterID, curGrantDetailID INT DEFAULT '';
DECLARE oldSongID, curSongID VARCHAR(10) DEFAULT '';
DECLARE grant_detail_cursor CURSOR FOR SELECT GrantDetailID, GrantMasterID, SongID FROM km_tbl_grantdetail ORDER BY GrantMasterID, SongID;
OPEN grant_detail_cursor;
FETCH grant_detail_cursor INTO curGrantDetailID, curGrantMasterID, curSongID;
WHILE(curGrantMasterID IS NOT NULL) DO
if(curGrantMasterID = oldGrantMasterID AND curSongID = oldSongID) THEN
DELETE FROM km_tbl_grantdetail WHERE GrantDetailID = curGrantDetailID;
ELSE
SET oldGrantMasterID = curGrantMasterID;
SET oldSongID = curSongID;
END IF;
FETCH grant_detail_cursor INTO curGrantDetailID, curGrantMasterID, curSongID;
END WHILE;
CLOSE grant_detail_cursor ;
END;
CALL grantDetailCursorX();
DROP PROCEDURE IF EXISTS grantDetailCursorX;
- 使用游标的方式删除表中相同的记录,并只留下其中一条
- 把具有相同字段的纪录删除,只留下一条
- 一条语句删除表中相同的记录
- 删除重复记录只留下一条
- 删除表中重复的记录,只保留一条
- sql server 删除某个字段重复的记录并留下一条记录
- 如何删除表中的重复记录只保留其中一条?
- mysql 删除表中的重复记录,只保留其中一条
- 删除表中的重复记录只保留其中一条
- 如何删除表中的重复记录只保留其中一条?
- 如何删除表中的重复记录只保留其中一条
- 如何删除表中的重复记录只保留其中一条
- 删除有两个字段相同的多条重复记录,只保存一条
- 删除有两个字段相同的多条重复记录,只保存一条
- sql 删除表中多余的重复记录(多个字段),只保留一条记录
- sql 删除表中多余的重复记录(多个字段),只保留一条记录
- sql 删除表中多余的重复记录(多个字段),只保留一条记录
- MySQL删除表中多余的重复记录,只保留一条记录
- C#中调用Windows API的要点
- cs文件中不能继承System.Web.UI.Page问题的解决方法
- Qt____在信号和槽中使用自己定义的结构体____操作
- 让宝贝爱上听故事——《故事口袋听听》安卓版V2.4上线
- Activity 的生命週期
- 使用游标的方式删除表中相同的记录,并只留下其中一条
- vlan
- [Happy Coding] 只用BIT操作,求解整型和浮点数的绝对值
- EL900音色编辑之‘包络(Envelope)简单释义’
- MyEclipse 8.5 安装配置指南 .
- android activity
- 获取word中XML
- Java 23种设计模式的有趣见解
- http://home.51cto.com/index.php?s=/space/6435861