У меня есть таблица с целым числом в качестве первичного ключа. Один из них - счетчик. Мне нужно снять счетчик с ключа.
Удаление счетчика из ключа приведет к дублированию нескольких строк (с разными значениями счетчика, но все остальные ключевые элементы).
Мне нужен запрос, который удалит все дубликаты и оставит только строку с наивысшим значением счетчика. Любая помощь приветствуется.
Как насчет этого:
create table foo (
a number,
b number,
c number,
constraint pk_foo primary key (a, b, c)
);
insert into foo (a, b, c) values (0, 0, 0);
insert into foo (a, b, c) values (0, 0, 1);
insert into foo (a, b, c) values (0, 1, 0);
insert into foo (a, b, c) values (0, 1, 1);
insert into foo (a, b, c) values (1, 0, 0);
insert into foo (a, b, c) values (1, 0, 1);
insert into foo (a, b, c) values (1, 1, 0);
insert into foo (a, b, c) values (1, 1, 1);
delete from foo t1
where t1.c not in (
select max(t2.c)
from foo t2
group by a, b
)
;
select * from foo;
PS: вам нужно удалить до удаление c из первичного ключа.