数据库表里有1万多条数据,现在要修改一个字段的值,他原先的值是1,现在要改成0,已经知道ID(唯一的),怎么写语句把1改成0?
1万多条数据,只要修改一部分,现在有这个部分的ID了,怎么一次性修改。
如果要一条一条修改的话,有几天条,会疯了去
update table set field = 0 where id in (....) and field = 1
还有一种方法是批量生成sql语句,再批量执行。
目前我能想到就这些方法
update 表名 set 要修改的列名=0 where id=要修改哪些ID
如果要改表中的全部,那可以不要 where 条件。
你那些要修改的ID是不是连贯的。如果是的话,就好办了。
"已经知道ID(唯一的)"
这些ID以什么形式存在? 字符串? 还是list? 集合?
我看很容易做到啊,c#写段程序或者Tsql编程都能达到呀 foreach一下就成了啊,最好加上事物.
不太了解楼主卡在哪个步骤了?
如果ID是list,那么先生成 string ids="id,id,id"; 这样格式的字符串
然后 执行 "update table set field = 0 where id in ("+ids+") and field = 1"
即可/
@coder_wang:
不错,关键要知道ID的存在形式,有什么规律
@artwl: ID是随机的比如说:XS20110402152652,XS20110225114419,XS20101113173036是根据时间生成的,现在就是说要把这些个ID的checkstate字段的值从0改成1,怎么改?
@未婚: 我不是问ID是什么格式,我是问现在ID是以什么形式存在的.
你说你已经知道ID,那你得到ID之后 ,ID应该保存在变量中吧. 这个变量是什么? LIST? 还是?
同意以上各种方法。。。
你将这个一千条id放入excel里面,一条id一行。再使用excel的字符串拼接一千多条sql语句。最后复制到sqlserver执行就可以了。我以前处理数据的时候就是这么搞的。
要修改一个字段的值,他原先的值是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来修改要修改的字段值了。
希望能够帮助上你~