dhl:不用游标批量更新的SQL语句
在更新一批记录时使用如下语句:
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)
在没有更好的办法呢?
其实还可以这样:
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语句相关推荐
- SqlServer 利用游标批量更新数据
SqlServer 利用游标批量更新数据 Intro 游标在有时候会很有用,在更新一部分不多的数据时,可以很方便的更新数据,不需要再写一个小工具来做了,直接写 SQL 就可以了 Sample 下面来看 ...
- * 执行多条更新的Sql语句
/** * 执行多条更新的Sql语句 */ public boolean UpdataSql(String sql[]){ TestConnect.Connect(); try { sta = Tes ...
- oracle insert汉字出错,Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名...
本文主要向大家介绍了Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. Oracle数据库,用 ...
- Oracle数据库:实现批量插入的sql语句
目录 问题现象: 问题分析: 注意:这里一定要注意分号(;)的使用: 否则容易出现报错,如: 解决方法: 问题现象: 今天想使用Oracle数据库进行批量插入的操作,发现和想象中的不太一样,报错如下: ...
- mybatisplus执行sql语句_一条更新的SQL语句是如何执行的?
提出问题 UPDATE student SET score = score + 1 WHERE uid = 666; 以上就是一条最简单的SQL更新语句,想要知道上面这句SQL语句是怎么执行的先要了解 ...
- oracle游标语法举例,PL/SQL语句块基本语法(ORACLE存储过程,函数,包,游标)
1.PL/SQL语句块 PL/SQL语句块只适用于Oracle数据库,使用时临时保存在客户端,而不是保存在数据库. 基本语法: declare 变量声明.初始化 begin 业务处理.逻辑代码 exc ...
- DeDeCMS后台批量修改替换sql语句大全
有时候后台文章内容.标题或者锚文本出错,需要修改批量修改,那么就需要用dedecms的sql语句进行批量修改了. 利用dedecms后台SQL命令行工具批量修改内容,路径和超链接等信息. 语句 DED ...
- 在mysql中更新数据sql语句怎么写_在MySQL中,更新数据库表记录的SQL语句,包括______语句...
在MySQL中,更新数据库表记录的SQL语句,包括______语句 答:insert replace update delete 在域F中,设其特征为2,对于任意a,b∈F,则(a+b)2 等于多少 ...
- 【Spring Boot+Thymeleaf+MyBatis+mysql】实现电子商务平台实战(附源码)持续更新~~ 包括sql语句、java、html代码
源码请点赞关注收藏后评论区留言和私信博主 开发环境:Web服务器使用Servlet容器,数据库采用mysql,集成开发环境为Spring Tool Suite(STS) 一.系统设计 电子商务平台分为 ...
最新文章
- hibernate之 一级缓存和二级缓存
- 朴素贝叶斯分类器(Navie Bayesian Classifier)中的几个要点(一)
- SpringBoot禁用命令行参数
- 【Java】集合+I/O流+多线程の练习题+面试题
- C语言实验源程序保存,实验一 C语言集成开发环境
- http参数修改以及拦截
- java 输出字符集合里的字_Java基础 -- 字符串(格式化输出、正则表达式)(示例代码)...
- 几个危险的扩展存储过程
- PowerMockito框架入门及使用
- MICROSOFT REPORTVIEWER(微软报表)项目中的应用
- CIS坐标系统与投影变换
- 企业微信 之 网页鉴权并与公司后台关联
- 剖析数据结构线性表,代码实现,分文件编写
- python判定素数_素数判定python
- 神经网络与深度学习(一):神经网络与数字识别
- TensorFlow Win10 stage.3
- 科技“战”疫,AI的春天来了吗?
- vue实现打印条码功能
- 最热门的IT论坛集合
- 曙光服务器如何重新设置u盘启动_u盘装系统设置u盘启动的两种方法