我们有一个表,由于意外原因,相同的数据被插入了两次,这意味着大多数行(但不是全部)在表中出现了两次。简单地说,我想要一条SQL语句来删除一行的一个版本,同时保留另一个版本;我不介意删除哪个版本,因为它们是相同的。
表结构大致如下:
FID,unique_ID,COL3,COL4....
Unique_ID是主键,每个值只出现一次。 FID是对于每个要素都唯一的键,因此如果它出现多次,则应删除重复项。
选择具有重复项的要素的语句是:
select count(*) from TABLE GROUP by FID
不幸的是,我无法从中得出一条SQL删除语句,该语句将删除多余的行,仅留下每个要素的一个副本。
这种类型的问题以前已经被问过,我尝试了使用distinct创建表,但是如何获得所有列而不命名它们?这只获取单个列FID,并且列出要保留的所有列会给出“ORA-00936:缺少表达式”错误。
CREATE TABLE secondtable NOLOGGING as select distinct FID from TABLE
表结构大致如下:
FID,unique_ID,COL3,COL4....
Unique_ID是主键,每个值只出现一次。 FID是对于每个要素都唯一的键,因此如果它出现多次,则应删除重复项。
选择具有重复项的要素的语句是:
select count(*) from TABLE GROUP by FID
不幸的是,我无法从中得出一条SQL删除语句,该语句将删除多余的行,仅留下每个要素的一个副本。
这种类型的问题以前已经被问过,我尝试了使用distinct创建表,但是如何获得所有列而不命名它们?这只获取单个列FID,并且列出要保留的所有列会给出“ORA-00936:缺少表达式”错误。
CREATE TABLE secondtable NOLOGGING as select distinct FID from TABLE