首页 新闻 会员 周边

批量修改sqlserver的值

0
悬赏园豆:30 [已关闭问题] 关闭于 2011-12-13 16:09

数据库表里有1万多条数据,现在要修改一个字段的值,他原先的值是1,现在要改成0,已经知道ID(唯一的),怎么写语句把1改成0?

问题补充:

1万多条数据,只要修改一部分,现在有这个部分的ID了,怎么一次性修改。

如果要一条一条修改的话,有几天条,会疯了去

未婚的主页 未婚 | 初学一级 | 园豆:67
提问于:2011-11-25 15:59
< >
分享
所有回答(7)
1

update table set field = 0 where id in (....) and field = 1

5207 | 园豆:9 (初学一级) | 2011-11-25 16:04

还有一种方法是批量生成sql语句,再批量执行。

目前我能想到就这些方法

支持(0) 反对(0) 5207 | 园豆:9 (初学一级) | 2011-11-25 16:24
0

update  表名 set 要修改的列名=0 where id=要修改哪些ID

如果要改表中的全部,那可以不要 where 条件。

wlz0815 | 园豆:587 (小虾三级) | 2011-11-25 16:18
0

你那些要修改的ID是不是连贯的。如果是的话,就好办了。

悟行 | 园豆:12559 (专家六级) | 2011-11-25 16:57
0

"已经知道ID(唯一的)"

这些ID以什么形式存在?  字符串? 还是list? 集合?

我看很容易做到啊,c#写段程序或者Tsql编程都能达到呀  foreach一下就成了啊,最好加上事物.

不太了解楼主卡在哪个步骤了?

coder_wang | 园豆:193 (初学一级) | 2011-11-25 18:00

如果ID是list,那么先生成  string ids="id,id,id"; 这样格式的字符串

然后 执行  "update table set field = 0 where id in ("+ids+") and field = 1"

即可/

支持(0) 反对(0) coder_wang | 园豆:193 (初学一级) | 2011-11-25 18:02

@coder_wang: 

不错,关键要知道ID的存在形式,有什么规律

支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2011-11-25 22:02

@artwl: ID是随机的比如说:XS20110402152652,XS20110225114419,XS20101113173036是根据时间生成的,现在就是说要把这些个ID的checkstate字段的值从0改成1,怎么改?

支持(0) 反对(0) 未婚 | 园豆:67 (初学一级) | 2011-11-26 12:34

@未婚: 我不是问ID是什么格式,我是问现在ID是以什么形式存在的.

你说你已经知道ID,那你得到ID之后 ,ID应该保存在变量中吧.  这个变量是什么?  LIST?  还是?

支持(0) 反对(0) coder_wang | 园豆:193 (初学一级) | 2011-11-28 15:05
0

同意以上各种方法。。。

KivenRo | 园豆:1734 (小虾三级) | 2011-11-25 18:19
0

你将这个一千条id放入excel里面,一条id一行。再使用excel的字符串拼接一千多条sql语句。最后复制到sqlserver执行就可以了。我以前处理数据的时候就是这么搞的。

小小刀 | 园豆:1991 (小虾三级) | 2011-11-25 19:43
0

要修改一个字段的值,他原先的值是1,现在要改成0。

我能理解为:只要这个字段的值为 1 的所有数据都改为0 吗 ? 

如果是这样,那么我假设要修改的字段为 Name,

代码为:

1  Update [表名] Set [Name] = '0'
2 Where [ID] in
3 (
4 Select [ID] from [表名] where [Name] = '1'
5 )

解释一下代码:

首先不管你要修改多少条数据,你只要确定要修改字段的值为 1 的所有数据都改为 0,而且ID又是唯一的,所以就可以根据这个条件来查找出你要修改的数据的所有ID值,那么ID唯一,就可以根据ID来修改要修改的字段值了。

希望能够帮助上你~

lufengsn | 园豆:205 (菜鸟二级) | 2011-11-25 21:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册