假如现在有个表是这样的id        count       
1          a
2          b
3          c
4          d
5          e
6          f
7          g
8          s
9          g
10         j
11         l
12         o
13         p
14         y
15         t我想删除 字段ID 累加等于20 的数据如何操作呢?可以按照顺序来删除.. 
分不是很多. 只是想看下大家的思路.和代码   感谢了!

解决方案 »

  1.   

    delete from tb
    where id in(select t.id
    from(
    select a.id, sum(b.id) as total
    from tb a 
    join tb b
    on b.id <= a.id
    group by a.id
    ) t
    where total= 20
    )
    看看是不是这样,但是按你的数据,好像没有数据被删除
      

  2.   

    /*
    id          total
    ----------- -----------
    1           1
    2           3
    3           6
    4           10
    5           15
    6           21
    7           28
    8           36
    9           45
    10          55
    11          66
    12          78
    --里面没有累加等于20的数据
    */
      

  3.   

    select number into #t from master..spt_values where type='p' and number between 1 and 256select a.number beginnum,b.number endnum,
    (select sum(number) from #t where number between a.number and b.number) sumrange
    from #t a,#t b where b.number>a.number
    and (select sum(number) from #t where number between a.number and b.number)=20
    order by 1
    /*beginnum    endnum      sumrange    
    ----------- ----------- ----------- 
    2           6           20(所影响的行数为 1 行)具体应该要根据你的需求。还有待具体的优化。