mssql 使用游标遍历方式批量update更新数据

mssql 使用游标遍历方式批量update更新数据
/*
  --1.创建测试表 
  create TABLE Table1 
  ( 
  a varchar(10), 
  b varchar(10), 
  c varchar(10), 
  CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED 
  ( 
  a ASC 
  ) 
  ) ON [PRIMARY] 

  create TABLE Table2 
  ( 
  a varchar(10), 
  c varchar(10), 
  CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED 
  ( 
  a ASC 
  ) 
  ) ON [PRIMARY] 
  GO 
  --2.创建测试数据 
  Insert into Table1 values('赵','asds',null) 
  Insert into Table1 values('钱','asds','100') 
  Insert into Table1 values('孙','asds','80') 
  Insert into Table1 values('李','asds',null) 

  Insert into Table2 values('赵','90') 
  Insert into Table2 values('钱','100') 
  Insert into Table2 values('孙','80') 
  Insert into Table2 values('李','95') 
  GO 
  select * from Table1 

  --3.通过游标方式更新 
  declare @name varchar(10) 
  declare @score varchar(10) 
  declare mycursor cursor for select a from Table1 where c is null 
  open mycursor 
  fetch next from mycursor into @name 
  while(@@fetch_status = 0) 
  BEGIN 
  select @score=c from Table2 where a=@name 
  update Table1 set c = @score where a = @name 
  fetch next from mycursor into @name  
  END 
  close mycursor 
  deallocate mycursor 
  GO 
  --4.显示更新后的结果 
  select * from Table1 
  GO 
  --5.删除测试表 
  drop TABLE Table1 
  drop TABLE Table2 

  虽然用游标可以实现,但代码看起来很复杂
 
  Update是T-sql中再简单不过的语句了,update table set column=expression [where condition],我们都会用到。但update的用法不仅于此,真正在开发的时候,灵活恰当地使用update可以达到事半功倍的效果。 

  假定有表Table1(a,b,c)和Table2(a,c),现在Table1中有些记录字段c为null,要根据字段a在Table2中查找,取出字段a相等的字段c的值来更新Table1。一种常规的思路,通过游标遍历Table1中字段c为null的所有记录,在循环体内查找Table2并进行更新,即用游标Cursor的形式
  */

时间: 2024-09-28 00:22:11

mssql 使用游标遍历方式批量update更新数据的相关文章

android快速开发框架XUtils update更新数据 无效

问题描述 android快速开发框架XUtils update更新数据 无效 最近学习XUtils发现 update更新数据库中的某个对象无效,好像第二次又可以了. 请问各位有遇到过这种情况吗

mysql多表join时候update更新数据的方法_Mysql

sql语句: 复制代码 代码如下: update item i,resource_library r,resource_review_link l set i.name=CONCAT('Review:',r.resource_name) where i.item_id=l.instance_id and l.level='item' and r.resource_id=l.resource_id and i.name='' JOIN UPDATE & JOIN DELETE 复制代码 代码如下:

MySQL入门插入、删除和更新数据sql语句

insert 语句的定义: insert 语句一次插入一条数据 insert into links(name,address) values('jerichen','gdsz'); insert 语句一次插入多条数据: 1,字段值2,字段值3),(另一个字段1的值,另一个字段2的值,另一个字段3的值); # 同时插入两条数据,看语法说明,那个into被我省略了 insert links (name,url) values('jerichen','gdsz'),('alone','gdgz');

更新数据

11.3.1 UPDATE 语法用户可以用UPDATE 语句来更新表中一列或多列数据值,其语法如下: 各参数说明如下: SETSET 子句用于指定更新的方法,即用的值取代相应的列的值.如果省略 WHERE 子句,那么表中的所有数据均会受到影响.在FROM 子句中指定的表或列的别名不能用于SET 子句中. column_name指定要更新数据的列.IDENTITY 列荒鼙桓隆? expression可以是常量.变量.表达式或返回单个值的子查询. DEFAULT指定使用已经定义的缺省值作为列的值.

MS SQL基础教程:更新数据

11.3.1 UPDATE 语法 用户可以用UPDATE 语句来更新表中一列或多列数据值,其语法如下: 各参数说明如下: SET SET 子句用于指定更新的方法,即用的值取代相应的列的值.如果省略 WHERE 子句,那么表中的所有数据均会受到影响.在FROM 子句中指定的表或列的别名不能用于SET 子句中. column_name 指定要更新数据的列.IDENTITY 列不能被更新. expression 可以是常量.变量.表达式或返回单个值的子查询. DEFAULT 指定使用已经定义的缺省值作

mssql数据库游标批量修改符合条件的记录

//需求:由于项目刚上传,没有票数,为了表现出一定的人气,需要在一开始把各项目的票数赋一个值 , 但每个项目不能一样,否则容易看出问题,呵呵 . DECLARE @Id varchar(50) DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT Id FROM dbo.kinpanAwardProject where session=9) --查出需要的集合放到游标中 OPEN My_Cursor; --打开游标 FETCH NEXT FROM My_Curs

mssql数据库游标批量修改符合条件记录的方法_mssql2005

需求:由于项目刚上传,没有票数,为了表现出一定的人气,需要在一开始把各项目的票数赋一个值 , 但每个项目不能一样,否则容易看出问题,呵呵 . 复制代码 代码如下: DECLARE @Id varchar(50) DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT Id FROM dbo.kinpanAwardProject where session=9) --查出需要的集合放到游标中 OPEN My_Cursor; --打开游标 FETCH NEXT FRO

在ASP.NET 2.0中操作数据之六十二:GridView批量更新数据_自学过程

导言: 在前面的教程,我们对数据访问层进行扩展以支持数据库事务.数据库事务确保一系列的操作要么都成功,要么都失败.本文我们将注意力转到创建一个批更新数据界面. 在本文,我们将创建一个GridView控件,里面的每一行记录都可以进行编辑(见图1),因此我们没有必要多添加一列来包含Edit, Update,和Cancel按钮,而是在页面包含2个"Update Products"按钮,被点击时,遍历所有的产品并对数据库进行更新.让我们开始吧. 图1:GridView控件里的每一行记录都可以编

实例讲解Java批量插入、更新数据_java

Java的批量添加数据,多个字段同时添加多条数据,我不知道你遇到过没有.今天我们就以一个具体的实例来说一下Java的批量添加数据,面向的是Oracle数据库. 前台页面: <span style="font-size:14px;"><body class="main_body" scroll="no"> <div class="employee_gun_dong"> <form nam