2016-11-29 14 views
1

重複したデータが含まれている表があり、その中から特定のエントリを削除するには、「Time」列に格納されている値に基づいてください。私のテーブルで特定の重複データを条件付きで削除する

、ID:504289は、3つのエントリがあります。

Date  Time    Place ID 
20161128 2016-11-30 12:54 East 504289 
20161128 2016-11-30 12:55 East 504289 
20161128 2016-11-30 13:10 East 504289 

私はそれと以前のエントリ間の時間間隔は15分以下の違いを持っ​​ている唯一のエントリを削除します。

上記の表に適用される場合、1254が最初のレコードで、13:10が15分を超えるため、12:55レコードのみが削除されます。

誰でもクエリを把握できますか?

+0

ご使用のデータベースに質問にタグを付けてください。また、 'time'カラムのデータ型は? –

+0

timeカラムがvarchar –

答えて

2

標準SQLを使用すると、別のレコードの15分以内にあるレコードを削除できます。

delete from t 
    where exists (select 1 
        from t t2 
        where t2.date = t.date and 
         t2.time < t.time and 
         t2.time > t.time - interval '15 minute' 
       ); 

日付/時刻の算術データベース間で大きく異なります。あなたのtime列が使用しているデータベースの日付/時刻型のいくつかの並べ替えであると仮定すると、SQLは次のようになります。上記はクエリの形を与える一般的な形式です。

+0

テーブルに、1分おきにタイムスタンプの付いた30行があるとします。 「12:00」から「12:29」まで。私があなたの質問を正しく理解していれば、最後のものを除く29行が削除されます。 OPが望んでいるようには見えません。まず、彼は最後の行ではなく最初の行を維持したいと考えています。 –

関連する問題