删除重叠日期的值

时间:2012-02-10 14:51:56

标签: sql between

我在MS Access数据库中有一个如下所示的表:

ID    Symbol    Direction    Start_val    End_val    AW    
1     ABC       up           100          120        10    
2     ABC       up           110          130        11    
3     XYZ       down         350          380        15    
4     XYZ       down         340          390        15    

我正在尝试删除重叠的start_val和end_val以及最高AW的重复符号和方向。例如,在上表中,数据匹配id 1具有与id 2的start_val和end_val重叠的start_val和end_val。由于id 1具有较小的AW,我想删除它。对于id 3和4,start_val和end_val重叠但AW是相同的,因此删除最小的id。

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

delete tablename
from tablename t1
inner join tablename t2 on t1.Symbol = t2.Symbol
                           and t1.Direction = t2.Direction
                           and t1.Start_val >= t2.Start_val
                           and t1.End_val <= t2.End_Val
                           and t1.AW <= t2.AW

使用具有相同限制的同一个表制作inner join

  • 等号;
  • 等方向;
  • 更大(或相等)Start_val;
  • 较小(或相等)End_val;
  • 较小(或相等)AW。

将为您提供要删除的行列表。