Очистка паролей и сохранение максимальных данных - PullRequest
1 голос
/ 29 мая 2019

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

DELETE from MAIN_TBL
WHERE ID NOT IN 
(
select * from
(SELECT MAX(updated_on)
FROM MAIN_TBL
GROUP BY widget_tag, ID) as TEMP
)

ОШИБКА = Преобразование не удалось при преобразовании даты и / или времени из строки символов.

Ответы [ 2 ]

2 голосов
/ 29 мая 2019

Если вы хотите удалить все, кроме самых новых строк для widget_tag, вы можете использовать:

WITH cte AS (
  SELECT *, ROW_NUMBER() OVER(PARITITION BY widget_tag ORDER BY updated_on DESC) rn
  FROM MAIN_TBL
)
DELETE FROM cte WHERE rn <> 1;
0 голосов
/ 29 мая 2019

Вы можете использовать EXISTS:

DELETE t
from MAIN_TBL t
WHERE EXISTS (
  SELECT 1 FROM MAIN_TBL
  WHERE id = t.id and widget_tag = t.widget_tag and updated_on > t.updated_on
)

См. Демоверсию .

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