在Oracle SQL中删除相反的重复项

时间:2016-03-29 12:55:55

标签: oracle

我有一些问题,希望你能伸出援助之手。 所以我有一些具有相反值的数据,例如:

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

抱歉丑陋的桌子。

但是如何删除金额被取消的行?我希望删除10000和-10000的那些。但我不知道具体的类型和身份证号码。 (30000和-30000是同一个问题)。

有什么想法吗?我一直在寻找,但只能找到如何删除重复的行,而不是两行。

希望有道理:)

更新。感谢目前为止的解决方案! :) 可以在金额列中超过1:1,但那些类型和ID不相同。例如,第6个条目可能如下所示:

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

最后一个不应该删除:)希望现在有意义。

1 个答案:

答案 0 :(得分: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;