在標題中表達情況相當複雜。一個例子應該更容易理解。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
第3行是內第1排第31天,後來出現了比第1行(2015年2月1日VS 2015年1月23日) ,所以它被刪除。
有沒有一個乾淨的方法來做到這一點?
這裏有點不清楚你在這裏試圖做什麼。你只是想刪除每個id的所有行,其中created_date大於該id的最近created_date 31天后?我不得不說,名爲id的列允許重複是有點矛盾的。 –
你可以參考這個線程 http://stackoverflow.com/questions/20960679/sql-server-find-records-that-have-appeared-3-times-in-last-30-days – Amrutha
@SeanLange更新回覆對你的問題。你的問題的答案是肯定的。實際情況是,每個月都會將新記錄插入表格中。有時可能會更改/更新記錄,並將具有相同ID的新記錄插入表中。這種情況只發生在創建舊記錄後的31天內。我想刪除這些重複項。希望這是明確的。 – breezymri