2016-03-29 16 views
1

私はいくつかの問題を抱えています。 は、だから私は、例えば、反対の値を持ついくつかのデータを持っている:醜いテーブルのOracle SQLで反対側の重複を削除する


Amount Type ID 
10000 10  25 
-10000 10  25 
20000 11  30 
30000 12  49 
-30000 12  49 

申し訳ありません。

しかし、金額がキャンセルされた行を削除するにはどうすればよいですか? 10000と-10000のものを削除したいと思います。しかし、私は特定のタイプとID番号を知りません。 (30000と-30000は同じ問題です)。

アイデア?私は永遠に検索してきましたが、重複行を削除する方法と、両方の行を削除する方法しか見つかりませんでした。

は、それが意味:)


更新します願っています。これまでのソリューションに感謝します! :) そこには、量の欄で1:1以上であるが、それらは同じタイプとIDではない。 exampelの場合、次のような6番目のエントリが表示されます。

Amount Type ID 
10000 10  25 
-10000 10  25 
20000 11  30 
30000 12  49 
-30000 12  49 
10000 31  42 

最後のものは削除しないでください。のみ提供限られた情報に基づいて

+2

のOracleやMySQL? – Aleksej

+0

オラクル、ごめんなさい.. – Racle

+0

プライマリキーとは何ですか? – Strawberry

答えて

1

...

DELETE x 
    FROM my_table x 
    JOIN my_table y 
    ON y.id = x.id 
    AND y.type = x.type 
    AND y.amount = x.amount * -1; 
関連する問題