从它的值表中已经存在的表中删除条目(Removing entries from a table wh

2019-10-31 02:24发布

我开始用这个例子表(#TEMP2):

| a | b |
|---|---|
| 2 | 4 |
| 2 | 5 | x
| 3 | 1 |
| 6 | 4 | x
| 6 | 5 |
| 7 | 5 | x
| 7 | 4 | x
|---|---|

这是我想从另一个现有表中删除交易密钥表。 它代表了否定的其他交易,其中一个否定B或反之亦然交易。 因此,我不能有一个单一的一个否定乘数b或单个B否定数倍。 我有想过会做,但有一个问题一定道理。 用我现有的逻辑会看看,如果a或b是重复的,并删除它,如果它是。 问题是,如果我想行要删除我会把它想“自由”了,这不是要删除的原因值。 我希望这不是太混乱。 但是从我的例子,我把旁边的每一行我想删除X的。 目前,我的算法删除过多的行。 行(6,5)被删除,因为已经有一个“5”在第二排,但该行是越来越删除(因为“2”不能否定“4”和“5”),所以这“释放了'的‘5’到否定条目6。

这是我当前的代码,但它删除过多的行:

delete t
from #temp2 t
    where exists(select * from #temp2 
                 where b = t.b 
                    and a < t.a)
  or exists(select * from #temp2
                 where a = t.a 
                    and b < t.b)

任何帮助深表感谢!

文章来源: Removing entries from a table where it's values already exist in the table