简单生活 发表于 2015-1-16 22:37:15

MSSQL网页编程之怎样查找、删除表中反复的纪录

我们只需要把binlog文件反向执行,每个操作都执行逆操作即可。当然也不是所有的event都反转。Table_mapevent必须还是在Rows_log_event每个操作之前。反复怎样查找、删除表中反复的纪录
软件情况:1、WindowsNT4.0+ORACLE8.0.4
2、ORACLE安装路径为:C:ORANT
成绩提出:1、当我们想要为一个表创立独一索引时,假如该表有反复的纪录,则没法创立乐成。办法道理:1、Oracle中,每笔记录都有一个rowid,rowid在全部数据库中是独一的,
 rowid断定了每笔记录是在ORACLE中的哪个数据文件、块、行上。

2、在反复的纪录中,大概一切列的内容都不异,但rowid不会不异,以是只需断定出反复纪录中
 那些具有最年夜rowid的就能够了,其他全体删除。

3、以下语句用到了3项技能:rowid、子查询、别号。
完成办法:
SQL>createtablea(2bmchar(4),--编码3mcvarchar2(20)--称号4)5/表已创建.SQL>insertintoavalues(1111,1111);SQL>insertintoavalues(1112,1111);SQL>insertintoavalues(1113,1111);SQL>insertintoavalues(1114,1111);SQL>insertintoaselect*froma;拔出4个纪录.SQL>commit;完整提交.SQL>selectrowid,bm,mcfroma;ROWIDBMMC-----------------------------000000D5.0000.000211111111000000D5.0001.000211121111000000D5.0002.000211131111000000D5.0003.000211141111000000D5.0004.000211111111000000D5.0005.000211121111000000D5.0006.000211131111000000D5.0007.000211141111查询到8纪录.查出反复纪录SQL>selectrowid,bm,mcfromawherea.rowid!=(selectmax(rowid)fromabwherea.bm=b.bmanda.mc=b.mc);ROWIDBMMC------------------------------------------000000D5.0000.000211111111000000D5.0001.000211121111000000D5.0002.000211131111000000D5.0003.000211141111删除反复纪录SQL>deletefromaawherea.rowid!=(selectmax(rowid)fromabwherea.bm=b.bmanda.mc=b.mc);删除4个纪录.SQL>selectrowid,bm,mcfroma;ROWIDBMMC------------------------------------------000000D5.0004.000211111111000000D5.0005.000211121111000000D5.0006.000211131111000000D5.0007.000211141111
操作被同步到从库上后,则主从都“回天无力”。

冷月葬花魂 发表于 2015-1-19 18:59:30

原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!

爱飞 发表于 2015-1-28 09:30:07

呵呵,这就是偶想说的

山那边是海 发表于 2015-2-5 15:46:59

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力

乐观 发表于 2015-2-12 20:17:56

如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。

海妖 发表于 2015-3-3 08:55:57

如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录.

简单生活 发表于 2015-3-11 09:55:22

如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。

不帅 发表于 2015-3-18 03:42:58

SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)

透明 发表于 2015-3-25 11:42:08

这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
页: [1]
查看完整版本: MSSQL网页编程之怎样查找、删除表中反复的纪录