数据多选批量更新 求正解

bob0234 2013-01-31 02:27:02
我要更新的数据量比较大 大约是800条

用多选方式获得 ID ,
然后根据对应的ID
批量更新数据库被的表


我原来的方法是 将所有ID 组合成字段@str varchar(8000)
如@str="1,2,3,4,8"
最后利用:
update 表1 set a=1
where charindex( ',' + id + ',', ',' + @str + ',' ) > 0
更新数据

但是超过100条,速度太慢了 效率低?

求正解?
...全文
242 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bob0234 2013-02-01
  • 打赏
  • 举报
回复
char 最长8000 varchar 最长8000 nchar 最长4000 nvarchar 最长4000 是不是这样啊?
bob0234 2013-02-01
  • 打赏
  • 举报
回复
我有1000条数据 能一次更新吗? 会不会超过 varchar 长度啊
-Tracy-McGrady- 2013-01-31
  • 打赏
  • 举报
回复
引用 9 楼 DBA_Huangzj 的回复:
引用 8 楼 yangsh0722 的回复:引用 7 楼 DBA_Huangzj 的回复:引用 4 楼 yangsh0722 的回复:引用 1 楼 DBA_Huangzj 的回复:你干嘛不用in来处理? 好久不见,shi到哪里去了?我哥结婚,昨天才忙完,今天才有时间 恭喜恭喜,您老什么时候结婚啊,我看您也快30了吧我才20出头
那么叼?
發糞塗牆 2013-01-31
  • 打赏
  • 举报
回复
引用 8 楼 yangsh0722 的回复:
引用 7 楼 DBA_Huangzj 的回复:引用 4 楼 yangsh0722 的回复:引用 1 楼 DBA_Huangzj 的回复:你干嘛不用in来处理? 好久不见,shi到哪里去了?我哥结婚,昨天才忙完,今天才有时间 恭喜恭喜,您老什么时候结婚啊,我看您也快30了吧
我才20出头
-Tracy-McGrady- 2013-01-31
  • 打赏
  • 举报
回复
引用 7 楼 DBA_Huangzj 的回复:
引用 4 楼 yangsh0722 的回复:引用 1 楼 DBA_Huangzj 的回复:你干嘛不用in来处理? 好久不见,shi到哪里去了?我哥结婚,昨天才忙完,今天才有时间
恭喜恭喜,您老什么时候结婚啊,我看您也快30了吧
發糞塗牆 2013-01-31
  • 打赏
  • 举报
回复
引用 4 楼 yangsh0722 的回复:
引用 1 楼 DBA_Huangzj 的回复:你干嘛不用in来处理? 好久不见,shi到哪里去了?
我哥结婚,昨天才忙完,今天才有时间
發糞塗牆 2013-01-31
  • 打赏
  • 举报
回复
引用 3 楼 bob0234 的回复:
IN的效率高吗? 而且 我ID 已经到8位了 varchar 最高长度是多少啊?
跟你8位有啥关系哦,跟你ID传入的个数反而有影响。大部分情况下in的效率还是可以接受的,
我腫了 2013-01-31
  • 打赏
  • 举报
回复
引用 3 楼 bob0234 的回复:
IN的效率高吗? 而且 我ID 已经到8位了 varchar 最高长度是多少啊?
varchar(max) : 2^31-1 (2147483645)
-Tracy-McGrady- 2013-01-31
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
你干嘛不用in来处理?
好久不见,shi到哪里去了?
bob0234 2013-01-31
  • 打赏
  • 举报
回复
IN的效率高吗? 而且 我ID 已经到8位了 varchar 最高长度是多少啊?
我腫了 2013-01-31
  • 打赏
  • 举报
回复
Declare @str varchar(8000)
set @str='1,2,3,4,8'

Exec ('Update t1 Set a=1 Where ID In('+@str+')')
發糞塗牆 2013-01-31
  • 打赏
  • 举报
回复
你干嘛不用in来处理?

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧