假如现在有个表是这样的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 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 的数据如何操作呢?可以按照顺序来删除..
分不是很多. 只是想看下大家的思路.和代码 感谢了!
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
)
看看是不是这样,但是按你的数据,好像没有数据被删除
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的数据
*/
(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 行)具体应该要根据你的需求。还有待具体的优化。