--创建待使用的表格
CREATE TABLE Orders
(
OrderID INT ,
CostValue DECIMAL(18, 2)
);
WITH cte_temp
AS ( SELECT 1 AS OrderID
UNION ALL
SELECT OrderID + 1
FROM cte_temp
WHERE OrderID < 10000
)
INSERT INTO Orders
( OrderID
)
SELECT OrderID
FROM cte_temp
OPTION ( MAXRECURSION 32767 );
SELECT *
FROM dbo.Orders;
--UPDATE dbo.Orders SET CostValue=NULL
--用游标的方式填充数据 51s
GO
DECLARE @OrderID INT;
DECLARE cursor_CostValue CURSOR
FOR
SELECT OrderID
FROM dbo.Orders;
OPEN cursor_CostValue;
FETCH NEXT FROM cursor_CostValue INTO @OrderID;
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE dbo.Orders
SET CostValue = @OrderID + 100
WHERE OrderID = @OrderID;
FETCH NEXT FROM cursor_CostValue INTO @OrderID;
END;
CLOSE cursor_CostValue;
DEALLOCATE cursor_CostValue;
--使用while循环的方式 用时13s
GO
DECLARE @RowID INT;
--获取待处理的数据记录到临时表
--字段说明 RowID 记录的行号 DealFlg 行处理标识
SELECT RowID = IDENTITY( INT,1,1 ),
DealFlg = 0 ,
OrderID ,
CostValue = 0
INTO #Temp
FROM dbo.Orders;

SELECT @RowID = MIN(RowID)
FROM #Temp
WHERE DealFlg = 0;
--如果最小行号不为空 则表示有数据
WHILE @RowID IS NOT NULL
BEGIN
UPDATE #Temp
SET DealFlg = 1 ,
CostValue = OrderID + 100
WHERE RowID = @RowID;
SELECT @RowID = MIN(RowID)
FROM #Temp
WHERE DealFlg = 0;
END;
--此时 临时表中的costvalue已经被处理完毕
UPDATE a
SET a.CostValue = b.CostValue
FROM dbo.Orders a
JOIN #Temp b ON a.OrderID = b.OrderID;

sql中--行处理数据的两种方式的更多相关文章

  1. MVC中返回json数据的两种方式

    MVC里面如果直接将数据返回到前端页面,我们常用的方式就是用return view(): 那么我不想直接用razor语法,毕竟razor这玩意儿实在是太难记了,还不如写ajax对接来得舒服不是 那么我 ...

  2. SQL Server 2008 数据库同步的两种方式 (发布、订阅)

    参考转载: SQL Server 2008 数据库同步的两种方式 (发布.订阅) 使用Sqlserver事务发布实现数据同步

  3. strus2中获取表单数据 两种方式 属性驱动 和模型驱动

    strus2中获取表单数据 两种方式 属性驱动 和模型驱动 属性驱动 /** * 当前请求的action在栈顶,ss是栈顶的元素,所以可以利用setValue方法赋值 * 如果一个属性在对象栈,在页面 ...

  4. [Android] Android ViewPager 中加载 Fragment的两种方式 方式(二)

    接上文: https://www.cnblogs.com/wukong1688/p/10693338.html Android ViewPager 中加载 Fragmenet的两种方式 方式(一) 二 ...

  5. [Android] Android ViewPager 中加载 Fragment的两种方式 方式(一)

    Android ViewPager 中加载 Fragmenet的两种方式 一.当fragment里面的内容较少时,直接 使用fragment xml布局文件填充 文件总数 布局文件:view_one. ...

  6. .Net 中读写Oracle数据库常用两种方式

    .net中连接Oracle 的两种方式:OracleClient,OleDb转载 2015年04月24日 00:00:24 10820.Net 中读写Oracle数据库常用两种方式:OracleCli ...

  7. easyUI之datagrid绑定后端返回数据的两种方式

    先来看一下某一位大佬留下的easyUI的API对datagrid绑定数据的两种方式的介绍. 虽然精简,但是,很具有“师傅领进门,修行靠个人”的精神,先发自内心的赞一个. 但是,很多人和小编一样,第一次 ...

  8. SparkStreaming获取kafka数据的两种方式:Receiver与Direct

    简介: Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式,可以简单理解成: Receiver方式是通过zookeeper来连接kafka队列, Dire ...

  9. SparkStreaming与Kafka,SparkStreaming接收Kafka数据的两种方式

    SparkStreaming接收Kafka数据的两种方式 SparkStreaming接收数据原理 一.SparkStreaming + Kafka Receiver模式 二.SparkStreami ...

随机推荐

  1. web forms page和control的生命周期life cycle交互,以及page生命周期中每个event中需要做什么事情

    只有 page_load和page_init这些可以autoeventwireup RenderControl只提供override public override void RenderContro ...

  2. nyoj--1036--非洲小孩(区间相交问题)

    非洲小孩 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 家住非洲的小孩,都很黑.为什么呢? 第一,他们地处热带,太阳辐射严重. 第二,他们不经常洗澡.(常年缺水,怎么洗 ...

  3. base标签的作用是什么

    转自:https://www.cnblogs.com/chenqiBlog/p/9517905.html base标签是HTML语言中的基准网址标记,它是一个单标签,位于网页头部文件的head标签内, ...

  4. 乔治·霍兹(George Hotz):特斯拉、谷歌最可怕的对手!

    17岁破解iPhone,21岁攻陷索尼PS3:现在,他是埃隆·马斯克最可怕的对手.   黑客往事   许多年后,当乔治·霍兹(George Hotz)回首往事,一定会把2007年作为自己传奇人生的起点 ...

  5. 将hexo的评论系统由gitment改为Valine

    title: 将hexo的评论系统由gitment改为Valine toc: false date: 2018-09-13 15:10:56 categories: methods tags: hex ...

  6. (转)script标签到底该放在哪里

    一般script标签会被放在头部或尾部.头部就是<head>里面,尾部一般指<body>里[4-5]. 将script放在<head>里,浏览器解析HTML,发现s ...

  7. jQuery学习(一)——jQuery入门

    1.jQuery基础 Jquery它是一个库(框架),要想使用它,必须先引入! jquery-1.8.3.js:一般用于学习阶段. jquery-1.8.3.min.js:用于项目使用阶段 官网下载后 ...

  8. HDU 1233 还是畅通工程【最小生成树】

    解题思路:kruskal算法:贪心选取最短的边构成一棵最小的生成树 共n个点,即先将所有的边排序,然后利用并查集判断,如果两点连通,则不加入树,不连通,则加入树,直到加入了n-1条边,构成生成树. 反 ...

  9. pthread_join/pthread_exit的用法解析

    官方说法: 函数pthread_join用来等待一个线程的结束.函数原型为: extern int pthread_join __P ((pthread_t __th, void **__thread ...

  10. nodejs 封装mysql连接池

    写在前面的 在nodejs后台代码中,我们总是会和数据库打交道 然而,每次都要写数据库的配置以及连接和断开,不胜其烦 我就封装了一个连接池模块,不足之处还请多多批评 上代码 一下是写在mysqls.j ...