Как исправить данные после смены ключа - PullRequest
0 голосов
/ 25 июня 2009

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

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

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

1 Ответ

0 голосов
/ 25 июня 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...