select * from ap;
Как удалить дубликаты записей из таблицы в оракула
select name from ap group by name having count(*)>1;
Я хочу удалить дубликаты записей из этой таблицы.
select * from ap;
Как удалить дубликаты записей из таблицы в оракула
select name from ap group by name having count(*)>1;
Я хочу удалить дубликаты записей из этой таблицы.
Если вы хотите сохранить одну запись для каждого имени:
delete from ap
where ap.id > (select min(ap2.id) from ap ap2 where ap2.name = ap.name)
delete from table_name a
where
a.rowid > any (select b.rowid from table_name b where a.col1 = b.col1 and a.col2 = b.col2);
Delete from ap where ap.rowid not in (select min (rowid) from ap a group by a.name);
Это удалит дубликаты, тройные так далее. Он сохранит одно происхождение для одной записи. Min (rowid)
или max (rowid)
вам нужно выбрать либо вы хотите сохранить первую/старую вставленную запись, либо последнюю/последнюю вставленную запись.
Попробуйте это; Внутренний запрос возвращает все max rowid на основе предложения group by, которое здесь является именем, поэтому только один rowid для всех дубликатов записей. delete будет содержать только те строки и удалять все остальные, которые дублируются.
delete from ap where rowid not in (select max(rowid) from ap group by name);
1. Раствор
delete from emp
where rowid not in
(select max(rowid) from emp group by empno);
2. sloution
delete from emp where rowid in
(
select rid from
(
select rowid rid,
row_number() over(partition by empno order by empno) rn
from emp
)
where rn > 1
);
его работы .. спасибо много @Gordon Linoff –