2

たとえば、次のサンプル データがあります。

DATE        VALUE  ID
2010-09-28  1      20000 
2010-09-28  1      50000 X
2010-09-28  3      20001 
2010-09-28  3      50001 X
2010-10-02  6      50002
2010-10-02  6      50003

私の問題は、データが重複しており、自動インクリメントされた ID によってのみ区別できることです。重複にはかなりの差があります。日付と値が対応する以前のエントリ (X でマーク) と比較して等しいことを考慮して、最新のエントリを削除したいと思います。行が等しい場合でも、前の ID がない場合 (最後の 2 行のように) は問題ありません。

何か案は?

4

1 に答える 1

0

あなたの表では、X が付いているものは同じ値を持っていません...これは間違いだと思います。

とにかく、ID の差が (たとえば 1) のときに重複を削除したい場合は、これを行うことができます。

編集:私はあなたが今欲しいものを手に入れたと思います。したがって、ID が連続する重複レコード (これは最初に考えたものです) とは見なされませんが、大きな違いがある重複レコードと見なされます。したがって、ID 間の最大差を考えて、重複と見なさないようにしましょう = X

Delete From Table where ID IN 
(Select a.ID from Table a, Table b Where a.ID-b.ID > X
AND a.Date = b.Date and a.Value = b.Value)

あなたの例では、Xの代わりに1以上を入れると、あなたが望む仕事をします。

削除に使用される選択の SQL フィドルの例

あなたは私があなたに与えた選択でそれを上に見るでしょう、あなたはあなたが削除したいIDを取得します.

于 2012-11-22T15:09:25.547 に答える