从Oracle中删除表中的重复行,可以使用以下SQL语句:
DELETE FROM table_name
WHERE ROWID > (
SELECT MIN(ROWID)
FROM table_name
GROUP BY column1, column2, ..., columnN
);
其中,table_name
是要删除重复行的表名,column1, column2, ..., columnN
是要比较的列名。
这个SQL语句会删除表中重复的行,只保留一行。它使用了GROUP BY
子句来将表中的行按照指定的列进行分组,然后使用MIN(ROWID)
函数来获取每个分组中的最小ROWID,最后删除ROWID大于最小ROWID的行。
需要注意的是,这个SQL语句只能删除表中的重复行,而不能删除重复列。如果需要删除重复列,可以使用以下SQL语句:
SELECT DISTINCT column1, column2, ..., columnN
INTO new_table_name
FROM table_name;
DROP TABLE table_name;
ALTER TABLE new_table_name RENAME TO table_name;
其中,table_name
是要删除重复列的表名,new_table_name
是临时表名,column1, column2, ..., columnN
是要保留的列名。
这个SQL语句会将表中的重复列删除,并将结果保存到一个新的表中,然后删除原表,并将新表重命名为原表名。
领取专属 10元无门槛券
手把手带您无忧上云