博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用临时表代替游标实现多条数据的动态更新
阅读量:5061 次
发布时间:2019-06-12

本文共 934 字,大约阅读时间需要 3 分钟。

 想根据一个结果集来更新表中的字段,也就是这个意思:

update a set a.s=b.ss,a.f=b.ff where id in (select id from b where xxx)

我的第一想法是使用游标。结果发现游标的效率太低了。经高人指点使用了临时表

代码:

ExpandedBlockStart.gif
View Code
 1 
declare
 
@t
 
table
(userid 
int
,username 
nvarchar
(
50
),commenttime 
datetime
,questionid 
nvarchar
(
50
))
 2 
 3 
insert
 
@t
(userid,username,commenttime,questionid)
 4 
select
 userid,username,commenttime,questionid 
from
 comment c
 5 
where
 questionid 
in
(
 6 
select
 questionId 
from
  question
 7 
where
 CreateTime
<
DATEADD
(minute,
1440
,
getdate
())
 8 
and
 IsAutoAdd
=
100
 
and
 questionstatus
<>
1
)
 9 
and
 
not
   
exists
10 
(
select
 
1
 
from
 comment 
where
 questionid
=
c.questionid 
and
 commenttime
>
 c.commenttime);
11 
12 
13 
    
update
 question 
set
 lastcommentuserID
=
t.userid,
14 
                        lastcommentuserName
=
t.username,
15 
                        LastCommentTime
=
t.commenttime
16 
                    
from
 
@t
 t
17 
                        
where
 question.questionID
=t.questionid

18 --set @error=@error+@@error; 

转载于:https://www.cnblogs.com/dzxw2371/archive/2011/07/29/2121027.html

你可能感兴趣的文章
编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成...
查看>>
NYOJ-613//HDU-1176-免费馅饼,数字三角形的兄弟~~
查看>>
graphite custom functions
查看>>
一个自己写的判断2个相同对象的属性值差异的工具类
查看>>
oracle连接的三个配置文件(转)
查看>>
pytho logging
查看>>
Python内置函数(29)——help
查看>>
oracle导出/导入 expdp/impdp
查看>>
Objective - C基础: 第四天 - 10.SEL类型的基本认识
查看>>
Android TextView加上阴影效果
查看>>
《梦断代码》读书笔记(三)
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>
[Unity3D]Unity3D游戏开发MatchTarget的作用攀登效果实现
查看>>
AngularJS学习篇(一)
查看>>
关于Xshell无法连接centos6.4的问题
查看>>
css3动画——基本准则
查看>>
输入月份和日期,得出是今年第几天
查看>>
pig自定义UDF
查看>>
Kubernetes 运维学习笔记
查看>>
spring security 11种过滤器介绍
查看>>