报错主键重复解决方法

2060
1

yangm 数据达人Lv4

发表于2020-2-20 18:27

楼主
本帖最后由 yangm 于 2020-2-20 18:31 编辑

一 主键重复处理步骤
/**查询键值重复**/
select key,count(1) from table
group by key
having count(1)>1
---重复主键的处理(删除主键-删除重复数据-添加主键)

1-----------删除主键-------------
ALTER TABLE BANCS_INVS_FDROP PRIMARY KEY ;
  
2----------根据rowid,rownum删除重复数据-------------
DELETE BANCS_INVS_F D WHERE D.ROWID IN(
SELECT S.ROWID FROM(
SELECT ROWID,ROW_NUMBER()OVER(PARTITION BYINVS_SOC_NO,AD04_MASTER_AC_NO,CD04_ACCT_TYPE,CD04_INT_CATE,AD04_SUB_AC ORDER BYAD04_MASTER_AC_NO) AS ORDER_KEY FROM BANCS_INVS_F
)S
WHERE ORDER_KEY >= 2

3-----------添加主键--------------------
ALTER TABLE BANCS_INVS_FADD PRIMARY KEY(INVS_SOC_NO,AD04_MASTER_AC_NO,CD04_ACCT_TYPE,CD04_INT_CATE,AD04_SUB_AC);

二 删除重复记录的3种方法  2 3可处理数据完全一样的记录
1 delete from table a where exists(select null from table b whereb.name=a.name and b.x>a.x)(根据列x不同)

2 delete from table a where exists(select null from table b whereb.name=a.name and b.rowid>a.rowid)(同方法一只是用rowid替代x)

3 delete from table
whre rowid in
(
select rowid from (selectrowid,row_number()over(partition by name order by id) asseqno)
where seqno>1
);

最近看过此主题的会员

15830170651

柒先生

esen_3ICMLB3JIFV5

1个回答

只看楼主

wut 数据老手Lv5

发表于2020-2-20 21:08

只看该作者

取消 关注该作者的回复

沙发

厉害

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号