给分 简单相加问题100分,最好一句update搞定
简单相加问题100分,最好一句update搞定
[解决办法]
楼主这问题提的~~~~~~
[解决办法]
--update,效率会高一点
create table #t (id int ,valF int,varT int)
insert #t
select 1,0,50 union
select 2,0,0 union
select 3,0,0 union
select 4,0,0 union
select 5,0,0
create table #t1(id int,addnum int)
insert #t1
select 1,10 union
select 2,12 union
select 3,13 union
select 4,17 union
select 5,30
declare @varT int,@valF int
select @varT = 0,@valF = varT from #t where id = 1
update _t
set @varT = @valF,@valF = _t1.addnum + @varT
,_t.varT = @varT,_t.valF = @valF
from #t _t
join #t1 _t1 on _t.id = _t1.id
select * from #t
id valF varT
----------- ----------- -----------
1 60 50
2 72 60
3 85 72
4 102 85
5 132 102
(所影响的行数为 5 行)
drop table #t,#t1
[解决办法]
libin_ftsafe(子陌红尘:当libin告别ftsafe) ( ) 信誉:105 Blog 2007-03-09 15:28:10 得分: 0
--换一种写法,同样用一条SQL实现UPDATE
create table #t (id int ,valF int,varT int)
insert #t
select 1,0,50 union
select 2,0,0 union
select 3,0,0 union
select 4,0,0 union
select 5,0,0
create table #t1(id int,addnum int)
insert #t1
select 1,10 union
select 2,12 union
select 3,13 union
select 4,17 union
select 5,30
go
update a
set
valF=(select sum(varT) from #t where id <=a.id)+isnull((select sum(addnum) from #t1 where id <=a.id),0),
varT=(select sum(varT) from #t where id <=a.id)+isnull((select sum(addnum) from #t1 where id < a.id),0)
from
#t a
go
select * from #t
/*
id valF varT
----------- ----------- -----------
1 60 50
2 72 60
3 85 72
4 102 85
5 132 102
*/
drop table #t,#t1
go
-------
這個不可以?
[解决办法]
UP!!
[解决办法]
declare @i int
select top 1 @i=varT from #t order by id
select a.id,(select sum(addnum) from #t1 where id <=a.id)+@i
,isnull((select sum(addnum) from #t1 where id <a.id),0)+@i
from #t a
[解决办法]
子陌兄,这里有你的盗版,改了封面~~~~~~~哈哈
[解决办法]
我来啦。
[解决办法]
呵呵,这边居然涨到200分了,占个楼层看看。
[解决办法]
子陌兄,这里有你的盗版,改了封面~~~~~~~哈哈
----------------------------------
汗,盗版不会是说我吧?
不好意思,同事的贴子,我看都没看别人的回复就贴代码了。
呵呵,这边居然涨到200分了,占个楼层看看。
----------------------------
反正楼主分多,这200分是我加的,呵。。。
[解决办法]
汗一个,楼上的强,盗用别人的ID?
汗一个,楼上的强盗,用别人的ID?
[解决办法]
哦 这样也可以啊~~
[解决办法]
怎么没看懂啊?
小山羊还能~~给别人帖子加分???!!!
[解决办法]
小山羊还能~~给别人帖子加分???!!!
[解决办法]
JF
[解决办法]
收到短消息趕來...LZ好人吶
[解决办法]
如果能让定一个变量的话,我这个方法比他们的速度快很多
create table #t (id int ,valF int,varT int)
insert #t
select 1,0,50 union
select 2,0,0 union
select 3,0,0 union
select 4,0,0 union
select 5,0,0
create table #t1(id int,addnum int)
insert #t1
select 1,10 union
select 2,12 union
select 3,13 union
select 4,17 union
select 5,30
declare @stock int
update #t set @stock= varT+isnull(@stock,0)+Addnum,vart=@stock-addnum,valF=@stock
from #t,#t1 where #t.id=#t1.ID
select * from #t
drop table #t
drop table #t1
结果
(所影响的行数为 5 行)
(所影响的行数为 5 行)
(所影响的行数为 5 行)
id valF varT
----------- ----------- -----------
1 60 50
2 72 60
3 85 72
4 102 85
5 132 102
(所影响的行数为 5 行)
[解决办法]
playwarcraft(时间就像乳沟,挤挤还是有的)
`_`!
[解决办法]
up