在更新一批记录时使用如下语句:


update  publish   set  contentid =
( select   top   1  articles.contentid  from  articles
where  articles.articleID = publish.objectID
)
-- where publish.objectid=@objectID

前提是:publish表的记录不能大于Article的记录,即要插入的目标表中示能插入null,否则会提示错误。

全来没办法,改为游标:



SET  NOCOUNT  ON
DECLARE   @contentID   int
declare   @objectID   int
declare   @countnumber   int
set   @countnumber = 0
DECLARE  publish_cursor  CURSOR   FOR  
     select  a.contentid,a.articleID  from  publish p 
     inner   join  articles a   on  a.articleID = p.objectID
     where  objectid > 0   and  p.contentid <>  a.contentid
     and  (p.cellid = 160   or  cellid = 138 )
     OPEN  publish_cursor

     FETCH   NEXT   FROM  publish_cursor
     INTO   @contentID , @objectID

         WHILE   @@FETCH_STATUS   =   0
         BEGIN
         print   @contentID
         print   @objectID
        
             -- 修改记录
             update  publish  set  ContentID = @contentID   where  objectid = @objectID
             -- 修改结束
             FETCH   NEXT   FROM  publish_cursor  into   @contentID , @objectID
            
         END
     CLOSE  publish_cursor
     DEALLOCATE  publish_cursor
    
GO

select  p.publishid,p.contentid,a.contentid,p.objectID,a.articleID  from  publish p 
inner   join  articles a   on  a.articleID = p.objectID
where  objectid > 0   and  p.contentid <>  a.contentid
and  (p.cellid = 160   or  cellid = 138 )
go

--  update publish set contentid=0 where (cellid=160 or  cellid=138)
--  select * from publish p  where ( p.cellid=160 or  cellid=138)

在没有更好的办法呢?
其实还可以这样:

update  publish   set  contentid =  a.contentid 
from  articles a   inner   join  publish p  on  p.objectID = a.articleID
where  cellid = 138

--  select * from publish where cellid=138
--  update publish set contentid=0 where cellid=138
助人等于自助:

tab1  
  -tab2_id  
  -date1  
   
  tab2  
  -tab2_id  
  -data2  
   
   
  现想批量把在tab2中,符合tab2_id=tab1_id的data2更新到tab1当中:

update   a   set   data1=b.data2   form   tab1   a,tab2   b   where   a.tab1_id=b.tab2_id

SELECT getdate()
--游标变量
declare @pingcoid  varchar(50)
declare @username varchar(50)

declare cur cursor fast_forward for
SELECT pingcoid  FROM [PingCoApp].[AppleGrange].userinfo
open cur
fetch cur into  @pingcoid
while @@fetch_status =0
begin
--循环
SELECT @username=username  FROM pingco.dbo.TUserInfo  where pingcoid = @pingcoid
update [PingCoApp].[AppleGrange].userinfo set username=@username where  pingcoid = @pingcoid
fetch next from cur into @pingcoid
end
close cur
deallocate cur

SELECT getdate()

-------------
SELECT getdate()
update   [PingCoApp].[AppleGrange].userinfo
set  Username = isnull(b.truename,b.username)
--select a.Username , b.truename ,isnull(b.truename,b.username),b.username
from  [PingCoApp].[AppleGrange].userinfo a inner join
      pingco.dbo.TUserinfo b on a.pingcoid = b.pingcoid
SELECT getdate()

转载于:https://www.cnblogs.com/dudu837/archive/2009/04/21/1440480.html

dhl:不用游标批量更新的SQL语句相关推荐

  1. SqlServer 利用游标批量更新数据

    SqlServer 利用游标批量更新数据 Intro 游标在有时候会很有用,在更新一部分不多的数据时,可以很方便的更新数据,不需要再写一个小工具来做了,直接写 SQL 就可以了 Sample 下面来看 ...

  2. * 执行多条更新的Sql语句

    /** * 执行多条更新的Sql语句 */ public boolean UpdataSql(String sql[]){ TestConnect.Connect(); try { sta = Tes ...

  3. oracle insert汉字出错,Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名...

    本文主要向大家介绍了Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. Oracle数据库,用 ...

  4. Oracle数据库:实现批量插入的sql语句

    目录 问题现象: 问题分析: 注意:这里一定要注意分号(;)的使用: 否则容易出现报错,如: 解决方法: 问题现象: 今天想使用Oracle数据库进行批量插入的操作,发现和想象中的不太一样,报错如下: ...

  5. mybatisplus执行sql语句_一条更新的SQL语句是如何执行的?

    提出问题 UPDATE student SET score = score + 1 WHERE uid = 666; 以上就是一条最简单的SQL更新语句,想要知道上面这句SQL语句是怎么执行的先要了解 ...

  6. oracle游标语法举例,PL/SQL语句块基本语法(ORACLE存储过程,函数,包,游标)

    1.PL/SQL语句块 PL/SQL语句块只适用于Oracle数据库,使用时临时保存在客户端,而不是保存在数据库. 基本语法: declare 变量声明.初始化 begin 业务处理.逻辑代码 exc ...

  7. DeDeCMS后台批量修改替换sql语句大全

    有时候后台文章内容.标题或者锚文本出错,需要修改批量修改,那么就需要用dedecms的sql语句进行批量修改了. 利用dedecms后台SQL命令行工具批量修改内容,路径和超链接等信息. 语句 DED ...

  8. 在mysql中更新数据sql语句怎么写_在MySQL中,更新数据库表记录的SQL语句,包括______语句...

    在MySQL中,更新数据库表记录的SQL语句,包括______语句 答:insert replace update delete 在域F中,设其特征为2,对于任意a,b∈F,则(a+b)2 等于多少 ...

  9. 【Spring Boot+Thymeleaf+MyBatis+mysql】实现电子商务平台实战(附源码)持续更新~~ 包括sql语句、java、html代码

    源码请点赞关注收藏后评论区留言和私信博主 开发环境:Web服务器使用Servlet容器,数据库采用mysql,集成开发环境为Spring Tool Suite(STS) 一.系统设计 电子商务平台分为 ...

最新文章

  1. hibernate之 一级缓存和二级缓存
  2. 朴素贝叶斯分类器(Navie Bayesian Classifier)中的几个要点(一)
  3. SpringBoot禁用命令行参数
  4. 【Java】集合+I/O流+多线程の练习题+面试题
  5. C语言实验源程序保存,实验一 C语言集成开发环境
  6. http参数修改以及拦截
  7. java 输出字符集合里的字_Java基础 -- 字符串(格式化输出、正则表达式)(示例代码)...
  8. 几个危险的扩展存储过程
  9. PowerMockito框架入门及使用
  10. MICROSOFT REPORTVIEWER(微软报表)项目中的应用
  11. CIS坐标系统与投影变换
  12. 企业微信 之 网页鉴权并与公司后台关联
  13. 剖析数据结构线性表,代码实现,分文件编写
  14. python判定素数_素数判定python
  15. 神经网络与深度学习(一):神经网络与数字识别
  16. TensorFlow Win10 stage.3
  17. 科技“战”疫,AI的春天来了吗?
  18. vue实现打印条码功能
  19. 最热门的IT论坛集合
  20. 曙光服务器如何重新设置u盘启动_u盘装系统设置u盘启动的两种方法

热门文章

  1. 用matlab解单纯形法,实验二MATLAB编程单纯形法求解
  2. template标签介绍和使用
  3. 性格与中医养生10--阴虚体质
  4. 《三个白痴》经典语录_值得深思。
  5. 【LeetCode 动态规划专项】最长递增子序列的个数(673)
  6. 电视剧版----《致青春》经典语录
  7. 连续逗号字符串分割成数组有值
  8. mysql sql判断语句,SQL条件判断语句语法
  9. 【Unity3D小功能】Unity3D中实现UI擦除效果、刮刮卡功能
  10. js的vscode插件