(SQL Vertica) Создайте новую таблицу, удалив строки с дубликатами в одном столбце

В настоящее время я пытаюсь написать запрос на SQL vertica, который удалит первую строку, в которой есть повторяющееся значение в определенном единственном столбце. Я использую SQL Vertica. Кто-нибудь знает как это сделать? ** Обновлять**

Я обнаружил, что дубликаты фактически присутствуют в первичном ключе, но у них есть связанная временная метка. Идея состоит в том, что если в первичном ключе находится дубликат, я хочу удалить строки со старой меткой времени. Кто-нибудь знает, как я могу это сделать?


person PhysicsIslyfe    schedule 07.08.2019    source источник
comment
У вас есть какой-либо уникальный ключ, кроме отдельного столбца   -  person Indrakumara    schedule 07.08.2019
comment
Если вы удалите какие-либо дубликаты для этого конкретного столбца, то технически это будет уникальный ключ, но я ничего не настраивал.   -  person PhysicsIslyfe    schedule 07.08.2019


Ответы (2)


Предположим, у вас есть основной столбец в таблице

Создайте тестовую таблицу и вставьте данные

CREATE TABLE test (
  id INT,
  exam_id INT
);
INSERT INTO test (id,exam_id) VALUES (1,1);
INSERT INTO test (id,exam_id) VALUES (2,1);
INSERT INTO test (id,exam_id) VALUES (3,2);
INSERT INTO test (id,exam_id) VALUES (4,2);

удалить запрос

delete from test where id in (

select id from (SELECT 
   id, 
  exam_id,
   ROW_NUMBER() OVER (
      PARTITION BY exam_id
      ORDER BY exam_id
   ) row_num
FROM 
   test
ORDER BY 
   id) x where row_num =1) ;

выход

  select * from test;
person Indrakumara    schedule 07.08.2019
comment
У меня 264 других столбца, будет ли этот метод еще применим? - person PhysicsIslyfe; 07.08.2019
comment
@PhysicsIslyfe да, ты можешь - person Indrakumara; 08.08.2019
comment
Итак, запустив это, я обнаружил, что дубликаты фактически присутствуют в первичном ключе, но у них есть связанная временная метка. Идея состоит в том, что если в первичном ключе находится дубликат, я хочу удалить строки со старой меткой времени. Ты знаешь, как я могу это сделать? - person PhysicsIslyfe; 08.08.2019
comment
@PhysicsIslyfe Можете ли вы добавить образец набора данных, легко будет дать решение, насколько я понимаю, вы можете изменить порядок, закрыв столбец с меткой времени - person Indrakumara; 08.08.2019

Что вы имеете в виду под "дубликат находится в первичном ключе"?

Невозможно иметь более одной строки в одной таблице с одним и тем же первичным ключом.

person Isuri Subasinghe    schedule 08.08.2019