日期:2014-05-17  浏览次数:20644 次

求大大帮忙想个好点的办法@!~
具体情况如下:
我现在在开发一个收据管理的系统的。
差不多完成了,可是在系统内的数据量很大,涉及批量调拨的问题;
在收据的基础信息中,每一本收据是一条记录,有一个收据管理号(唯一),还有一个开始收据号,一个结束收据号。
比如:
收据管理号 开始收据号 结束收据号
SJ0001 00001 00050 代表这本收据是有50页一本的,当然还有其他25一本的等等,这不是重点。


之前,由于考虑到调拨数据量较大的问题,我是直接让其手动填写需调拨的收据的开始号,与结尾号,然后将符合条件的收据进行调拨,避免那种以勾选的方式调拨中,容易引起人烦躁的问题,哎,私企的无奈,要考虑领导的感受啊。

可是,现在问题来了,之前的收据由于管理不善,导致有重复收据的发生,如果按照我上面所写的调拨方式的话,就会把重复的收据全部都调拨出去了,这不合理。

那么,请问各位大大有啥好的建议伐,全部分数敬上!

本人开发经验较少,悲剧啊!~!

------解决方案--------------------
探讨
具体情况如下:
我现在在开发一个收据管理的系统的。
差不多完成了,可是在系统内的数据量很大,涉及批量调拨的问题;
在收据的基础信息中,每一本收据是一条记录,有一个收据管理号(唯一),还有一个开始收据号,一个结束收据号。
比如:
收据管理号 开始收据号 结束收据号
SJ0001 00001 00050 代表这本收据是有50页一本的,当然还有其他25一本的等等,这不是重点。


之前……

------解决方案--------------------
这个问题的关键在于楼主想对重复数据如何处理?是任意选择其中的一条?又或者是某一条中的某一列能满足楼主的筛选条件?又或者是别的。。。?

我想提醒楼主的是,sql本身就有去重复的功能:关键字<distinct>
具体用法可以去网上找。。。
------解决方案--------------------
探讨
引用:

引用:
具体情况如下:
我现在在开发一个收据管理的系统的。
差不多完成了,可是在系统内的数据量很大,涉及批量调拨的问题;
在收据的基础信息中,每一本收据是一条记录,有一个收据管理号(唯一),还有一个开始收据号,一个结束收据号。
比如:
收据管理号 开始收据号 结束收据号
SJ0001 00001 00050 代表这本收据是有50页一本的,当然……

------解决方案--------------------
简单地说,你的主键没有重复,但是记录的内容上有重复。distinct 只能滤掉主键重复。不起根本作用。可以试一下先导出为某种格式文件,再写个 C代码,什么语言都行,读取那个文件,去重就可以了。注意分批导出控制文件大小,再就看你算法了,效率不要太差。全部去重完毕后,清空表,在导入数据库。我想到了另外一个思路,得看你java SE基础,SJ0001 00001 00050这个表所对应的java类,重写他的hashcode方法,只比较他的内容(也就是后两列,忽略他的主键列,不要让第一列参与hash算法),这样的话,内容一样的即使主键不同也算同一个,然后把用到这个类的集合属性,用 Set.利用java Set自动去重功能。一切OK