现有一张表A。存放客户债务信息。系统每天自动计算出结果存放在表A中。导致大量的垃圾数据,现在需要处理表中的垃圾数据。求解决方案
例如:
表A
========================================================================
client_id measure_year client_pd client_ead client_lgd
6578 2007-01-01 1000 1000 1000
6578 2007-01-02 1000 1000 1000
6578 2007-01-03 1000 1000 1000
6578 2007-01-04 500 1000 1000
7840 2007-01-01 2000 1000 1000
7840 2007-01-02 2000 1000 1000
7840 2007-01-03 1000 1000 1000
=========================================================================
处理完垃圾数据后的结果:
表A:
=========================================================================
client_id measure_year client_pd client_ead client_lgd
6578 2007-01-03 1000 1000 1000
6578 2007-01-04 500 1000 1000
7840 2007-01-02 2000 1000 1000
7840 2007-01-03 1000 1000 1000
=========================================================================
删除除去measure_year字段只外。完全匹配的行。并切保留其中一行数据。
表A中的数据量比较大。希望可以考虑的效率问题。
请高手赐教。谢谢!!
例如:
表A
========================================================================
client_id measure_year client_pd client_ead client_lgd
6578 2007-01-01 1000 1000 1000
6578 2007-01-02 1000 1000 1000
6578 2007-01-03 1000 1000 1000
6578 2007-01-04 500 1000 1000
7840 2007-01-01 2000 1000 1000
7840 2007-01-02 2000 1000 1000
7840 2007-01-03 1000 1000 1000
=========================================================================
处理完垃圾数据后的结果:
表A:
=========================================================================
client_id measure_year client_pd client_ead client_lgd
6578 2007-01-03 1000 1000 1000
6578 2007-01-04 500 1000 1000
7840 2007-01-02 2000 1000 1000
7840 2007-01-03 1000 1000 1000
=========================================================================
删除除去measure_year字段只外。完全匹配的行。并切保留其中一行数据。
表A中的数据量比较大。希望可以考虑的效率问题。
请高手赐教。谢谢!!
DELETE FROM tableA E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM tableA X WHERE X.client_id = E.client_id and x.client_pd=e.client_pd and x.client_ead=e.client_ead and x.client_lgd=e.client_lgd);
楼主,记得这个已经回复过了啊。
还有个从应用系统解决的办法,就是插入记录的时候判断一下,如果重复就不要插入了,插入一个日志表就行了,这样这个表就不会有重复记录了。
现在在判断的时候已经+了判断了。不会造成大量的垃圾数据了。但是以前的数据需要清理。所以才问了这个问题。
你先按照上面方法删除大部分垃圾数据,然后再
delete from table where client_pd is null;