我们有一个表,其中两次意外插入了相同的数据,这意味着大多数(但不是全部)行在表中出现了两次。简单地说,我想要一条 SQL 语句来删除一行的一个版本,同时保留另一个版本;我不介意删除哪个版本,因为它们是相同的。
表结构类似于:
FID、unique_ID、COL3、COL4....
Unique_ID
是主键,意味着每个键只出现一次。
FID
是每个功能唯一的键,因此如果它出现多次,则应删除重复项。
要选择具有重复项的功能,请执行以下操作:
select count(*) from TABLE GROUP by FID
不幸的是,我不知道如何从该语句转到 SQL 删除语句,该语句将删除无关的行,每行只留下一个。
之前已经问过这类问题,我已经尝试过使用 distinct 来创建表,但是如何在不命名的情况下获取所有列?这只获取单列 FID 并逐项列出要保留的所有列给出:ORA-00936: missing expression
CREATE TABLE secondtable NOLOGGING as select distinct FID from TABLE