yhbh bgxm bgrq bgqnr bghnr
121909 经营状态 26-12月-02 营业 注销
121909 经营状态 26-12月-02 营业 注销
17 个解决方案
#1
rownum可以么?我怕误删除(把其他的删了)
#2
查询重复记录的语句
select rowid,bdsszd from BADWDJ a where a.rowid != (select max(rowid) from BADWDJ b where a.bdsszd =b.bdsszd)
这个你可能能用着
select rowid,bdsszd from BADWDJ a where a.rowid != (select max(rowid) from BADWDJ b where a.bdsszd =b.bdsszd)
这个你可能能用着
#3
http://www.oradb.net/sql/find0.htm
#4
delete from a where rowid!=(select max(rowid) from a b where a.yhbh =b.yhbh and a.bgxm=b.bgxm and.......);
#5
rowid一定不同,可以用delete from ... where rowid =
其实用rownum也是可以的.如果两条记录重复,可以用
delete from ... where rownum=1
不过这样的方法比较老土.
其实用rownum也是可以的.如果两条记录重复,可以用
delete from ... where rownum=1
不过这样的方法比较老土.
#6
删除重复列的方法
(1) DELETE FROM table_name A WHERE ROWID > (
SELECT min(rowid) FROM table_name B
WHERE A.key_values = B.key_values);
(2) create table table2 as select distinct * from table1;
drop table1;
rename table2 to table1;
(3) Delete from mytable where rowid not in(
select max(rowid) from mytable
group by column_name );
(4) delete from mytable t1
where exists (select 'x' from my_table t2
where t2.key_value1 = t1.key_value1
and t2.key_value2 = t1.key_value2
...
and t2.rowid > t1.rowid);
(1) DELETE FROM table_name A WHERE ROWID > (
SELECT min(rowid) FROM table_name B
WHERE A.key_values = B.key_values);
(2) create table table2 as select distinct * from table1;
drop table1;
rename table2 to table1;
(3) Delete from mytable where rowid not in(
select max(rowid) from mytable
group by column_name );
(4) delete from mytable t1
where exists (select 'x' from my_table t2
where t2.key_value1 = t1.key_value1
and t2.key_value2 = t1.key_value2
...
and t2.rowid > t1.rowid);
#7
delete from ... where rownum=1
#8
luckysxn(风花雪)
个人认为他的方案不错---全,hehehehe
个人认为他的方案不错---全,hehehehe
#9
luckysxn(风花雪) 大侠讲得很清楚啦:
(1) DELETE FROM table_name A WHERE ROWID > (
SELECT min(rowid) FROM table_name B
WHERE A.key_values = B.key_values);
(2) create table table2 as select distinct * from table1;
drop table1;
rename table2 to table1;
(3) Delete from mytable where rowid not in(
select max(rowid) from mytable
group by column_name );
(1) DELETE FROM table_name A WHERE ROWID > (
SELECT min(rowid) FROM table_name B
WHERE A.key_values = B.key_values);
(2) create table table2 as select distinct * from table1;
drop table1;
rename table2 to table1;
(3) Delete from mytable where rowid not in(
select max(rowid) from mytable
group by column_name );
#10
delete from table_name a
where rowid< (select max(rowid) from table_name
where column1=a.column1 and column2=a.column2
and colum3=a.colum3 and ...);
where rowid< (select max(rowid) from table_name
where column1=a.column1 and column2=a.column2
and colum3=a.colum3 and ...);
#11
delete from table_name
where 主键 in
(select a.主键 from table_name a,table_name b
where a.主键=b.主键
and a.rowid <>b.rowid)
where 主键 in
(select a.主键 from table_name a,table_name b
where a.主键=b.主键
and a.rowid <>b.rowid)
#12
其实这种情况完全用不到那么麻烦!只要这样一条命令就可以了,保证安全,不会有任何危险!!!
create table another_table as select distinct * from table_name;
这样another_table就是删除了重复记录的表!
这个问题是解决了,不过我得提醒你,最好在你的表上建一个主键,以此来杜绝下次再出现类似问题。要知道,管理软件最怕业务记录出现问题,可能开始编写一个程序比简单,但是如果数据出现了毛病,那么后期的维护工作完全可以把你拖垮!!!
create table another_table as select distinct * from table_name;
这样another_table就是删除了重复记录的表!
这个问题是解决了,不过我得提醒你,最好在你的表上建一个主键,以此来杜绝下次再出现类似问题。要知道,管理软件最怕业务记录出现问题,可能开始编写一个程序比简单,但是如果数据出现了毛病,那么后期的维护工作完全可以把你拖垮!!!
#13
根据rowid
#14
liu7537(一飞)
你的方法也有问题的
你这样只能删除所有列都相同的,而实际上重复数据指的是 本应作为主键的字段有重复数据,其他字段则不考虑
比如:
表a
___________
id1 number
id2 number
value varchar2(10)
本来的主键应该为(id1,id2)
但现在里面有这样的数据
id1 id2 value
--------------------
1 1 a
1 1 b
这样根据你的方法就不能删除了
解决办法:
delete from a b
where rowid != (select max(rowid)
from a c
where id1 = b.id1
and id2 = b.id2);
你的方法也有问题的
你这样只能删除所有列都相同的,而实际上重复数据指的是 本应作为主键的字段有重复数据,其他字段则不考虑
比如:
表a
___________
id1 number
id2 number
value varchar2(10)
本来的主键应该为(id1,id2)
但现在里面有这样的数据
id1 id2 value
--------------------
1 1 a
1 1 b
这样根据你的方法就不能删除了
解决办法:
delete from a b
where rowid != (select max(rowid)
from a c
where id1 = b.id1
and id2 = b.id2);
#15
完全同意 xinpingf(白开心) 的观点
#16
你这样只能删除所有列都相同的,而实际上重复数据指的是 本应作为主键的字段有重复数据,其他字段则不考虑
如果存在这样的数据?那你这个数据哭还设计主关键字做什么?
关系型数据库还有什么用?
如果存在这样的数据?那你这个数据哭还设计主关键字做什么?
关系型数据库还有什么用?
#17
同意楼上的!
俺就纳闷了,如果你建库建表的时候都考虑到约束,即使只满足第二范式,那怎么会有什么重复记录???
俺就纳闷了,如果你建库建表的时候都考虑到约束,即使只满足第二范式,那怎么会有什么重复记录???
#1
rownum可以么?我怕误删除(把其他的删了)
#2
查询重复记录的语句
select rowid,bdsszd from BADWDJ a where a.rowid != (select max(rowid) from BADWDJ b where a.bdsszd =b.bdsszd)
这个你可能能用着
select rowid,bdsszd from BADWDJ a where a.rowid != (select max(rowid) from BADWDJ b where a.bdsszd =b.bdsszd)
这个你可能能用着
#3
http://www.oradb.net/sql/find0.htm
#4
delete from a where rowid!=(select max(rowid) from a b where a.yhbh =b.yhbh and a.bgxm=b.bgxm and.......);
#5
rowid一定不同,可以用delete from ... where rowid =
其实用rownum也是可以的.如果两条记录重复,可以用
delete from ... where rownum=1
不过这样的方法比较老土.
其实用rownum也是可以的.如果两条记录重复,可以用
delete from ... where rownum=1
不过这样的方法比较老土.
#6
删除重复列的方法
(1) DELETE FROM table_name A WHERE ROWID > (
SELECT min(rowid) FROM table_name B
WHERE A.key_values = B.key_values);
(2) create table table2 as select distinct * from table1;
drop table1;
rename table2 to table1;
(3) Delete from mytable where rowid not in(
select max(rowid) from mytable
group by column_name );
(4) delete from mytable t1
where exists (select 'x' from my_table t2
where t2.key_value1 = t1.key_value1
and t2.key_value2 = t1.key_value2
...
and t2.rowid > t1.rowid);
(1) DELETE FROM table_name A WHERE ROWID > (
SELECT min(rowid) FROM table_name B
WHERE A.key_values = B.key_values);
(2) create table table2 as select distinct * from table1;
drop table1;
rename table2 to table1;
(3) Delete from mytable where rowid not in(
select max(rowid) from mytable
group by column_name );
(4) delete from mytable t1
where exists (select 'x' from my_table t2
where t2.key_value1 = t1.key_value1
and t2.key_value2 = t1.key_value2
...
and t2.rowid > t1.rowid);
#7
delete from ... where rownum=1
#8
luckysxn(风花雪)
个人认为他的方案不错---全,hehehehe
个人认为他的方案不错---全,hehehehe
#9
luckysxn(风花雪) 大侠讲得很清楚啦:
(1) DELETE FROM table_name A WHERE ROWID > (
SELECT min(rowid) FROM table_name B
WHERE A.key_values = B.key_values);
(2) create table table2 as select distinct * from table1;
drop table1;
rename table2 to table1;
(3) Delete from mytable where rowid not in(
select max(rowid) from mytable
group by column_name );
(1) DELETE FROM table_name A WHERE ROWID > (
SELECT min(rowid) FROM table_name B
WHERE A.key_values = B.key_values);
(2) create table table2 as select distinct * from table1;
drop table1;
rename table2 to table1;
(3) Delete from mytable where rowid not in(
select max(rowid) from mytable
group by column_name );
#10
delete from table_name a
where rowid< (select max(rowid) from table_name
where column1=a.column1 and column2=a.column2
and colum3=a.colum3 and ...);
where rowid< (select max(rowid) from table_name
where column1=a.column1 and column2=a.column2
and colum3=a.colum3 and ...);
#11
delete from table_name
where 主键 in
(select a.主键 from table_name a,table_name b
where a.主键=b.主键
and a.rowid <>b.rowid)
where 主键 in
(select a.主键 from table_name a,table_name b
where a.主键=b.主键
and a.rowid <>b.rowid)
#12
其实这种情况完全用不到那么麻烦!只要这样一条命令就可以了,保证安全,不会有任何危险!!!
create table another_table as select distinct * from table_name;
这样another_table就是删除了重复记录的表!
这个问题是解决了,不过我得提醒你,最好在你的表上建一个主键,以此来杜绝下次再出现类似问题。要知道,管理软件最怕业务记录出现问题,可能开始编写一个程序比简单,但是如果数据出现了毛病,那么后期的维护工作完全可以把你拖垮!!!
create table another_table as select distinct * from table_name;
这样another_table就是删除了重复记录的表!
这个问题是解决了,不过我得提醒你,最好在你的表上建一个主键,以此来杜绝下次再出现类似问题。要知道,管理软件最怕业务记录出现问题,可能开始编写一个程序比简单,但是如果数据出现了毛病,那么后期的维护工作完全可以把你拖垮!!!
#13
根据rowid
#14
liu7537(一飞)
你的方法也有问题的
你这样只能删除所有列都相同的,而实际上重复数据指的是 本应作为主键的字段有重复数据,其他字段则不考虑
比如:
表a
___________
id1 number
id2 number
value varchar2(10)
本来的主键应该为(id1,id2)
但现在里面有这样的数据
id1 id2 value
--------------------
1 1 a
1 1 b
这样根据你的方法就不能删除了
解决办法:
delete from a b
where rowid != (select max(rowid)
from a c
where id1 = b.id1
and id2 = b.id2);
你的方法也有问题的
你这样只能删除所有列都相同的,而实际上重复数据指的是 本应作为主键的字段有重复数据,其他字段则不考虑
比如:
表a
___________
id1 number
id2 number
value varchar2(10)
本来的主键应该为(id1,id2)
但现在里面有这样的数据
id1 id2 value
--------------------
1 1 a
1 1 b
这样根据你的方法就不能删除了
解决办法:
delete from a b
where rowid != (select max(rowid)
from a c
where id1 = b.id1
and id2 = b.id2);
#15
完全同意 xinpingf(白开心) 的观点
#16
你这样只能删除所有列都相同的,而实际上重复数据指的是 本应作为主键的字段有重复数据,其他字段则不考虑
如果存在这样的数据?那你这个数据哭还设计主关键字做什么?
关系型数据库还有什么用?
如果存在这样的数据?那你这个数据哭还设计主关键字做什么?
关系型数据库还有什么用?
#17
同意楼上的!
俺就纳闷了,如果你建库建表的时候都考虑到约束,即使只满足第二范式,那怎么会有什么重复记录???
俺就纳闷了,如果你建库建表的时候都考虑到约束,即使只满足第二范式,那怎么会有什么重复记录???