sql server 动态建表(SQL Server如何通过创建临时表遍历更新数据详解)
类别:数据库 浏览量:1468
时间:2021-10-09 00:23:03 sql server 动态建表
SQL Server如何通过创建临时表遍历更新数据详解前言:
前段时间新项目上线为了赶进度很多模块的功能都没有经过详细的测试导致了生成环境中的数据和实际数据对不上,因此需要自己手写一个数据库脚本来更新下之前的数据。(线上数据库用是SQL Server2012)关于数据统计汇总的问题肯定会用到遍历统计汇总,那么问题来了数据库中如何遍历呢?好像并没有for和foreach这种类型的功能呀,不过关于数据库遍历最常见的方法当然是大家经常会想到的游标啦,但是这次我并没有使用游标,而是通过创建临时表的方式来更新遍历数据的。
为什么不使用游标,而使用创建临时表?
首先使用游标的方式遍历数据可能代码上比较直观,但是代码比较繁琐(声明游标,打开游标,使用游标,关闭游标和释放游标)并且不符合操作集合的原则,而且也非常的耗费性能,因此通常数据量比较大的情况下不推荐使用游标。通过临时表while遍历数据,更符合我们日常的编程思想操作集合原则,性能上虽不敢保证表使用游标要好多少,但是在把临时表使用恰当的前提是能减少大量的性能消耗,并且使用起来非常简单易懂。
通过创建临时表遍历更新数据:
注意:这里只是一个简单的临时表更新实例。
我的目的是把TalkingSkillType表中的Sort值更新成为与Id一样的值!
未更新前的数据如下图所示:
临时表遍历更新SQL语句:
----SQL SERVER通过临时表遍历数据 -- 判断是否存在(object(‘objectname',‘type')) IF OBJECT_ID('tempdb.dbo.#temp','U') IS NOT NULL DROP TABLE dbo.#temp; GO -- 声明变量 DECLARE @ID AS INT, @Name AS VARCHAR(50), @Num AS INT --数据插入临时表(select * INTO #Temp from 来源表) SELECT ID,Name INTO #temp FROM TalkingSkillType --查询临时表中数据 --SELECT * FROM #temp set @Num=0 --赋初始值 --查询是否存在记录,只要存在会一直循环直到不存在(WHILE EXISTS) WHILE EXISTS(SELECT ID FROM #temp) BEGIN set @Num= @Num + 1 -- 取值(把临时表中的值赋值给定义的变量) SELECT top 1 @ID= ID,@Name=Name FROM #temp; -- 输出操作(用于查看执行效果) PRINT(@Num) --更新 UPDATE TalkingSkillType SET Sort=@ID where id=@ID -- 删除本次操临时表中的数据(避免无限循环) DELETE FROM #temp WHERE ID=@ID; END --删除临时表 #temp --drop table #temp
PRINT(@Num)输入日志:
遍历更新成功后结果如下图所示:
总结
到此这篇关于SQL Server如何通过创建临时表遍历更新数据的文章就介绍到这了,更多相关SQL Server创建临时表遍历更新数据内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
您可能感兴趣
- sqlserver存储删除过程(Sql中存储过程的定义、修改和删除操作)
- mysql 命令与sqlserver的区别大么(MySQL系列之执行SQL 语句时发生了什么?)
- sqlserver中的存盘按钮在哪(SQL Server 2016里的sys.dm_exec_input_buffer的问题)
- sqlserver怎么修改表结构(SQL Server中修改“用户自定义表类型”问题的分析与方法)
- sqlserver查看数据表更新时间(SQL Server实现显示每个类别最新更新数据的方法)
- sqlserver2016标准分区(Sql Server 2016新功能之Row-Level Security值得关注)
- 启动sqlserver代理服务失败(SQL Server代理服务无法启动怎么办)
- sqlserver统计表大小(SqlServer 垂直分表减少程序改动)
- sqlserver表空间占用率(SQL Server获取磁盘空间使用情况)
- SqlServer 表单查询问题及解决方法(SqlServer 表单查询问题及解决方法)
- sqlserver2012卸载工具(Windows下SQL Serever 2012彻底卸载删除教程)
- sqlserver函数条件判断(Sql Server 开窗函数Over的使用实例详解)
- python2.7连接sqlserver数据库(Python使用sqlalchemy模块连接数据库操作示例)
- sqlserver分组查询(sql server如何利用开窗函数over进行分组统计)
- sqlserver新建连接服务器卡住(SQL Server成功与服务器建立连接但是在登录过程中发生错误的快速解决方案)
- sqlserver 创建数据库链接(SqlServer数据库远程连接案例教程)
- 辱华品牌新百伦官宣新代言人IU,个别粉丝希望get爱豆同款(辱华品牌新百伦官宣新代言人IU)
- 巅峰时期被爆床照,曾被选国民最讨厌女星,IU不为人知的黑历史(巅峰时期被爆床照)
- 每天1万吨牛奶倒进下水道,美国大萧条一幕重现(每天1万吨牛奶倒进下水道)
- 如何看待美国数十万加仑牛奶倒下水道 历史又重演了(如何看待美国数十万加仑牛奶倒下水道)
- 历史惊人的相似,美国80万加仑牛奶倒入下水道,意味着什么(历史惊人的相似)
- 美国数十万加仑牛奶倒进下水道,世界会重演1929年的大萧条吗(美国数十万加仑牛奶倒进下水道)
热门推荐
- axios实现原理(项目中Axios二次封装实例Demo)
- sqlserver索引实例(SQL Server索引的原理深入解析)
- sqlserver修改排序规则几种方法(SQL Server 分页编号的另一种方式推荐)
- dedecms数据负载能力(详解织梦dedecms标签{dede:flink /}用法)
- mac的mysql连接问题如何解决(MAC 中mysql密码忘记解决办法)
- js条件语句教学(浅谈JS如何写出漂亮的条件表达式)
- numpy常用统计分析函数(Numpy之random函数使用学习)
- 云主机哪个网站最好(云主机怎么选择)
- ASP.NET SignalR是什么
- mysql一次查询的过程(一篇文章弄懂MySQL查询语句的执行过程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9