前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL语句查询结果集中的动态修改案例(临时表+游标)

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

作者头像
跟着阿笨一起玩NET
发布2018-09-18 13:21:09
2.1K0
发布2018-09-18 13:21:09
举报

本文转载:http://www.cnblogs.com/Charles2008/archive/2008/03/04/1090314.html

曾经一位朋友问我这样一个问题:怎样在查询出来的结果集中增加一个新列(有规律)? 如:数据库中的结构和数据如下: (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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-02-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档