一个并不复杂的问题

zcxc 2003-05-11 09:44:05
有一个aaa表,如:

bh b1 b2 b3 b4
1 12345 12341 null null
2 12344 12345 null null
3 12345 12342 null null
4 12343 12345 null null
5 12345 12343 null null
6 12345 12344 null null
7 12344 12343 null null
8 12344 12321 null null
9 12312 12322 null null
10 12345 12323 null null
11 12321 12344 null null
12 12121 12212 null null
13 12323 12312 null null

b1、b2列可存在相同的数据,要在b1列中找出不同的数据,且要求在b1、b2列数据相同的情况下,在先出现的数据行的b3、b4列分别标上‘1’和bh列的号码,其余b1、b2列中相同的数据在b4列上标上bh列的号码。 可用下面存储过程实现。
CREATE proc cx
as
declare @sz int,@aa int
set @sz=1
select @aa=count(*) from aaa
while @sz<=@aa
begin
if exists (select b1 from aaa where bh=@sz and b3 is null and b4 is null)
begin
update aaa set b3=1 where bh=@sz
update aaa set b4=@sz where b1=(select b1 from aaa where bh=@sz) and b4 is null or b2=(select b1 from aaa where bh=@sz) and b4 is null
end
select @sz=@sz+1
end
return

得到结果如下:

bh b1 b2 b3 b4
1 12345 12341 1 l
2 12344 12345 null 1
3 12345 12342 null 1
4 12343 12345 null 1
5 12345 12343 null 1
6 12345 12344 null 1
7 12344 12343 1 7
8 12344 12321 null 7
9 12312 12322 1 9
10 12345 12323 null 1
11 12321 12344 null 7
12 12121 12212 1 12
13 12323 12312 null 9

问题是在数据量很大时,用while循环逐个查找,挺费时的。有没有更好的方法实现上述要求。

...全文
9 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zcxc 2003-05-11
高手们都休息了??????
回复
zcxc 2003-05-11
错了,b1的行8数据与行7相同,只是b4标上bh号码,行11也是一样。类似的,b1列的行9,行12的数据也算是第一次出现的数据。
回复
zcxc 2003-05-11
如:b1列的行1为‘12345’,属第一次出现不同的数据,那行1的b3标上‘1’,b4就填入bh的号码,在行3、5、6、10和b2的行2、4的‘12345’都与b1列的行1数据相同,故要求在b4相应的行中填入bh的号码。行2的b2列因已有‘12345’与行1的b1列‘12345’相同,故在b1列,行2的‘12344’数据不能算是第一次出现的不同的数据。只有b1的行7中‘12344’才算是第一次出现的数据,相应的b3、b4就分别标上‘1’和bh的号码。b1的行8中‘12344’与行7的第一次出现的数据的‘12344’相同,b3、b4就分别标上‘1’和bh的号码。这样的要求能用别的办法实现吗?
回复
hooboo 2003-05-11
没明白,B3,B4在什么条件下改变
回复
相关推荐
基于java的企业人事管理系统设计--软件工程课程设计(含源码与论文设计).rar 1 引言 4 1.1 课程设计目标 4 1.2 编程工具(编程环境)介绍 4 1.3 实施时间及主要实施步骤 4 2 需求分析 5 3 系统总体设计 6 4 数据库设计 6 5 主要功能模块的设计与实现 10 5.1 功能模块1详细设计(综合查询员工信息)..........................................................10 5.1.1 详细设计.......................................................................................................10 5.1.2 算法流程........................................................................................................15 5.1.3 界面设计及测试结果.....................................................................................15 6 调试分析 15 7 用户手册 16 8 测试结果 17 8.1 员工信息的添加...................................................................................................17 8.2 员工信息的修改...................................................................................................17 8.3 员工信息的删除...................................................................................................18 8.4 员工信息的综合查询...........................................................................................18 8.5 员工信息按性别统计的结果................................................................................19 8.6 员工信息按状态统计的结果...............................................................................19 8.7 员工信息按职称统计的结果................................................................................20 9 结论 20 10 参考文献 20
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2003-05-11 09:44
社区公告
暂无公告