| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 647 人关注过本帖
标题:写了一个笨语句
只看楼主 加入收藏
风流上进
Rank: 1
等 级:新手上路
威 望:1
帖 子:63
专家分:0
注 册:2007-7-20
收藏
 问题点数:0 回复次数:2 
写了一个笨语句

update test1 set je = jj * 人口数
人口数 根据 left(bh,4) 获得

create table test1 (bh nvarchar(20),jj int,je int)

insert test1 ('1101001',10,0)
insert test1 ('1101001',10,0)
insert test1 ('1101001',10,0)
insert test1 ('1102001',10,0)
insert test1 ('1102001',10,0)
insert test1 ('1102001',10,0)
insert test1 ('1102001',10,0)
insert test1 ('1102001',10,0)
insert test1 ('1103001',10,0)
insert test1 ('1103001',10,0)

我的做法



declare @min int,@max int,@num int
select @min=min(left(bh,4)),@max=max(left(bh,4)) from test1

while @min<=@max
begin
select @num=count(*) from test1 where left(bh,4) = @min
print @num
update test1
set je = jj * @num where left(bh,4) = @min

set @min=@min + 1
end

由于编号可能不连续,我写的这个执行速度特别慢,谁有更好的?



搜索更多相关主题的帖子: 语句 
2007-09-18 10:41
风之剑雨飘香
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-10-2
收藏
得分:0 
回复:(风流上进)写了一个笨语句
update test1  set je = jj* a.total  from (select left(bh,4) bh4, count(bh) total from test1 group by left(bh,4)) a  where left(test1.bh,4)=a.bh4
2007-10-07 12:22
thllilac
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2007-9-7
收藏
得分:0 
update test1 set je = jj* left(bh,4)
不可以么?

曾经有一个女孩问我:“你长的帅不帅?”我说:“不帅。”她打了我一巴掌,生气的说:“你骗人!”
2007-10-08 11:03
快速回复:写了一个笨语句
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032876 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved