sql删除表中的重复记录

来源:未知 责任编辑:责任编辑 发表时间:2014-01-25 11:37 点击:

sql删除表中的重复记录
 
CREATE OR REPLACE PROCEDURE getUserMenuResource(roid IN Varchar2)  
AS  
BEGIN  
  DELETE FROM BOCO_TEMP_MENURESOURCE;  
  COMMIT;  
  --读出所有角色表所对应的菜单ID  
  DECLARE CURSOR records IS SELECT a.funcid FROM boco_rolemenurelation a WHERE a.roleid=roid ORDER BY a.funcid;  
  BEGIN  
    FOR cur IN records LOOP  
        --SELECT a.displayname,a.url,a.pid,a.icon,a.disorder,a.code,a.isshow INTO BOCO_TEMP_MENURESOURCE(displayname,url,pid,icon,disorder,code,isshow) FROM boco_menuresource a START WITH a.CODE =cur.funcid CONNECT BY a.PID = PRIOR a.code  ;  
        --Dbms_Output.put_line(cur.funcid);  
         Dbms_Output.put_line(cur.funcid );  
        --遍历所有根菜单下的所有子菜单项,将其写入 BOCO_TEMP_MENURESOURCE 表  
        INSERT INTO  BOCO_TEMP_MENURESOURCE(DISPLAYNAME,  
                              URL,  
                              PID,  
                              ICON,  
                              DISORDER,  
                              CODE,  
                              ISSHOW)  
SELECT A.DISPLAYNAME, A.URL, A.PID, A.ICON, A.DISORDER, A.CODE, A.ISSHOW FROM BOCO_MENURESOURCE A START WITH A.CODE =cur.funcid CONNECT BY A.PID = PRIOR A.code  ;  
    END  
    LOOP;  
    EXCEPTION  
        WHEN OTHERS THEN  
             Dbms_Output.put_line(SQLERRM);  
  END;  
  --删除表中重复菜单记录项    
  DELETE FROM boco_temp_menuresource  
  WHERE code IN (SELECT code FROM   
  boco_temp_menuresource GROUP BY code HAVING COUNT(code)>1)  
  AND ROWID NOT IN (SELECT MIN(ROWID) FROM boco_temp_menuresource GROUP BY code HAVING COUNT(code)>1);  
  
  --SELECT * FROM BOCO_TEMP_MENURESOURCE;  
  COMMIT;  
END;  

 
 
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • sql常见面试题
  • SQL SERVER 2005性能之跟踪
  • SQL编程(一)
  • LINUX上RMAN自动备份脚本
  • sql server面试题
  • 如何将多个SQL查询统计结果一次显示出来
  • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
  • sql server 列转行
  • SQL小技巧系列 --- 行转列合并
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1