Удалить конкретную запись из нескольких дубликатов в таблице - PullRequest
0 голосов
/ 05 марта 2019

Как удалить конкретную запись из нескольких дубликатов ниже приведена таблица, например,

enter image description here

Это только один из примеров, и у нас есть много подобных случаев. Из этой таблицы мне нужно удалить ранг 2 и 3.

Пожалуйста, предложите мне лучший способ идентифицировать дубликаты записей и удалить определенные строки

Ответы [ 3 ]

0 голосов
/ 05 марта 2019

Я не рекомендую удалять записи, но это решение может помочь с истекающими записями или их удалением:

Таблица должна иметь уникальный идентификатор и поле, позволяющее определить, что срок действия записи истек. Если это не так, я рекомендую добавить его в таблицу. Вы можете создать составной идентификатор в своем запросе, но в будущем вам захочется иметь эти атрибуты.

Создайте запрос, который идентифицирует каждую запись, где RANK <> 1. Это будет ваш подзапрос.

Напишите ваш запрос ОБНОВЛЕНИЯ

UPDATE A
SET [EXPIRE_DTTM] = GETDATE()
FROM *TableNameWithTheRecords* A
INNER JOIN (*SubQuery*) B ON A.UniqueID = B.UniqueID

** Если вы действительно хотите удалить записи, используйте это:

DELETE FROM *TableNameWithTheRecords* 
WHERE *UniqueID* = (SELECT *UniqueID* FROM *TableNameWithTheRecords* WHERE RANK <> 1)
0 голосов
/ 05 марта 2019
 WITH tbl_alias AS
    (
       SELECT emp_ID,
           RN = ROW_NUMBER() OVER(PARTITION BY emp_ID ORDER BY emp_ID)
       FROM tblName
    )
    DELETE FROM tbl_alias WHERE RN > 1
0 голосов
/ 05 марта 2019

Это должно работать

delete
from <your table> t
where rank != (select top(rank)
              from <your table> tt
              where tt.emp_id = t.emp_id
               order by rank desc --put asc if you want to keep the lowest rank
               )
group by t.emp_id
...