Ситуация довольно сложная для выражения в названии. Пример должен быть намного легче понять.SQL удаляет строки по разнице дат
Мой стол A
:
uid id ticket created_date
001 1 movie 2015-01-23 08:23:16
002 25 TV 2012-01-13 12:02:20
003 1 movie 2015-02-01 07:15:36
004 1 movie 2014-02-15 15:38:40
Что мне нужно добиться того, чтобы удалить дубликаты записей, которые появляются в течение 31 дней друг с другом и сохраняют записи, которые появляются в первую очередь. Таким образом, приведенная выше таблица будет сокращена до B
:
uid id ticket created_date
001 1 movie 2015-01-23 08:23:16
002 25 TV 2012-01-13 12:02:20
004 1 movie 2014-02-15 15:38:40
, поскольку третий ряд в A
были в течение 31 дней подряд 1 и оказалось позже, чем строки 1 (2015-02-01 против 2015-01-23) , поэтому он удаляется.
Есть ли чистый способ сделать это?
Немного непонятно, что вы пытаетесь сделать здесь. Вы просто хотите удалить все строки для каждого id, где created_date> через 31 день после самого последнего created_date для этого идентификатора? Я должен сказать, что столбец с именем id, который позволяет дублировать, - это немного оксюморон. –
Вы можете обратиться к этой теме http://stackoverflow.com/questions/20960679/sql-server-find-records-that-have-appeared-3-times-in-last-30-days – Amrutha
@SeanLange Обновлено в ответ на ваш вопрос. Ответ на ваш вопрос - да. Фактически происходит то, что новые записи вставляются в таблицу каждый месяц. Иногда запись может быть изменена/обновлена, и новая запись с тем же идентификатором будет вставлена в таблицу. Такие экземпляры происходят только в течение 31 дня со дня создания старой записи. Я хочу удалить эти дубликаты. Надеюсь, это понятно. – breezymri