Как исправить данные после смены ключа

0

У меня есть таблица с целым числом в качестве первичного ключа. Один из них - счетчик. Мне нужно снять счетчик с ключа.

Удаление счетчика из ключа приведет к дублированию нескольких строк (с разными значениями счетчика, но все остальные ключевые элементы).

Мне нужен запрос, который удалит все дубликаты и оставит только строку с наивысшим значением счетчика. Любая помощь приветствуется.

Теги:

1 ответ

0
Лучший ответ

Как насчет этого:

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 из первичного ключа.

  • 0
    Разве это не отбросит все строки за одно вхождение?
  • 0
    Изменено, чтобы включить рабочий пример: выбор будет возвращать только те строки, где c = 1.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню