传奇私服DBC2000合并数据库时删除重复Name关键字SQL指令

 

前一段时间,自己下了个私服玩玩,觉得没有英雄玩起来不过瘾。自己看了看原理,是HeroM2引擎,应该有英雄,于是决定自己改传奇私服脚本。英雄是改出来了,可是没有英雄书。翻遍了数据库也没找到,看来原作者把书阉割掉了。最后我又找来一个有书的版本,用DBC2000把两个数据库合并了。于是问题出来了,原来这玩意儿Name不是关键字,搞出重复的名字,HeroM2默认最后一次读取的物品属性值,导致原来程序中得物品属性出现错误。程序乱作一团。

以下是我在对传奇私服D:\mirserver\Mud2\DB\StdItems.DB文件在DBC2000中的一些SQL命令。
1、原因;两个数据库都有同一个物品,在使用DBC直接合并后。物品出现重复。HeroM2默认最后一次读取的物品属性值,导致原来程序中得物品属性出现错误。
2、解决思路,先找到要合并的数据库中与原数据库中Name关键字中相同的数据项。然后删掉这些数据项。最后合并。
3、以下是我用到的一些SQL命令。


Hero 705//原数据库StdItems.DB
All 1139//新数据库StdItemsA.DB


Select * From "StdItems.DB","StdItemsA.DB" where "StdItems.DB".Name="StdItemsA.DB".Name
有效
eff 373//373个一样的物品

Select "StdItemsA.DB".* From "StdItems.DB","StdItemsA.DB" where "StdItems.DB".Name="StdItemsA.DB".Name order by "StdItemsA.DB".Idx asc
有效
//只选中新数据库中的数据

Delete from "StdItemsA.DB"  where  "StdItemsA.DB".Name =( Select "StdItemsA.DB".Name From "StdItems.DB","StdItemsA.DB" where "StdItems.DB".Name="StdItemsA.DB".Name)
无效
//这样做不行,乱写的。

Delete from "StdItemsA.DB"  where  "StdItemsA.DB".Name  in(Select "StdItemsA.DB".Name From "StdItems.DB","StdItemsA.DB" where "StdItems.DB".Name="StdItemsA.DB".Name)
有效
//删除新数据库中查询出来重复的数据

select count(*) from "StdItemsA.DB"
有效
//查看新数据库中查询出来重复的数据

After Del   StdItemsA =767

Select * From "StdItems.DB" InnerJoin "StdItemsA.DB" on "StdItems.DB".Name="StdItemsA.DB".Name
无效
//这一点让我很纳闷?难道DBC2000没有内连接,只是试验了一下结果报错。那DBC数据库是多么的低效呀。望高手指点。

传送合并后 1472 项,ok

 

为了以防万一,随后把英雄的魔法也合并了一下
D:\mirserver\Mud2\DB\Magic.DB

/magic
Hero 190  //无英雄的旧数据库
Max  133  //有英雄的新数据库

 

Select "MagicA.DB".* From "MagicA.DB","Magic.DB" where "MagicA.DB".MagName="Magic.DB".MagName order by "MagicA.DB".MagID asc
有效

result 114 effect//114个完全一样的魔法

Delete from "MagicA.DB"  where  "MagicA.DB".MagName  in(Select "MagicA.DB".MagName From "MagicA.DB","Magic.DB" where "MagicA.DB".MagName="Magic.DB".MagName)
有效
//删除

select * from "MagicA.DB"
剩余 Max 20//还有20个新魔法呢,赶快合并进去看看

传送合并后 210

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值