ora-02437错误解决方法总结--表数据去重

简介: ORA-02437错误:创建表时没有添加主键,当表中已经存在很多重复数据时,再添加主键就会报这个错误。所以,设计表的时候一定要注意!下面是这个错误的解决办法,先找出表中重复的数据,然后删除相同数据rowid最小的那一列select * from material_tablewhere unid in (select unid from material_table group by unid having count(unid) > 1)这里的unid 是主键列,通过主键进行分组查找出记录大于1条的数据。

ORA-02437错误:创建表时没有添加主键,当表中已经存在很多重复数据时,再添加主键就会报这个错误。所以,设计表的时候一定要注意!

下面是这个错误的解决办法,先找出表中重复的数据,然后删除相同数据rowid最小的那一列

select * from material_table
where unid in (select   unid from material_table group by unid having count(unid) > 1)

这里的unid 是主键列,通过主键进行分组查找出记录大于1条的数据。

找到重复数据后进行删除

delete from material_table where unid in (select unid from material_table group by  unid having count(unid) > 1) and rowid not in (select min(rowid) from material_table  group by unid having count(unid)>1)


目录
相关文章
|
9月前
|
SQL 关系型数据库 MySQL
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
188 0
|
7月前
|
SQL Oracle 关系型数据库
ORA-01658创建表或索引报错分析
某项目最近在 SQL Loader 导数据时偶尔会报错,类似如下: SQL loader ORA-01658 unable to creale INITIAL extent for segment in tablespace ADS5GP2P_1 这个报错的意思是,没有足够的连续空间为表或索引创建 INITIAL extent
150 0
|
关系型数据库 MySQL
MYSQL 不允许在子查询的同时删除原表数据的解决方法 specify target table
MYSQL 不允许在子查询的同时删除原表数据的解决方法 specify target table
111 0
|
SQL Oracle 关系型数据库
"ORA-00942: 表或视图不存在 "的原因和解决方法
采用Oracle数据库,使用Powerdesigner设计,生成Sql文件导入后查询出现“ORA-00942: 表或视图不存在 ”,很是郁闷,这个问题以前出现过,当初解决了,但因好久没有使用,这次竟然忘了,害得我浪费了好些时间,为了避免再次忘记,将它记下来,同时和大家一起分享。
2696 0
|
SQL 关系型数据库 MySQL
SQL练习题--5.6和5.7版本的Group by 用法以及中间表使用
M-统计每个老师教授课程的学生总数-if(expr1,expr2)
379 0
|
SQL Oracle 关系型数据库
Oracle中表连接方式(Nested Loop、Hash join)对于表访问次数的测试
介绍了sql多表连接的几种方式,如有不正确的地方请指正。
4350 0
|
数据库 索引 数据安全/隐私保护

热门文章

最新文章