Sql Update Select 与 重设标识列

  在工作中,我们经常更新数据,习惯写法是:update tablename set  name= 'newvalue' where name= 'oldvalue'  .

当些时候,我们要将A表中的A列部份值,更新到B表中的B列时,出现要更新的字段多的时候用上面那种更新方式,那就想当痛苦。

怎么办呢?

 可以用update from 的方法。如

update  B set B.name = a.name,B.Num = a.Num from (select * from A) a where a.a = 2 and B.b=1

这里值得注意的是,B不能用重命名的方法(B AS testb),用tesb.name 控作B的列。因为update 后面表直接控作的时,直接将修改物理表。所以用别名代替 B会报错。

--------------------------------------------

重设标识列:

 有时候,误操作把标识列给删了,但标识列的id在数据起到相当重要的作用。你想重显这条数据,发现没有备份,这下就糗了,重新插入,id是重增的;用update修改id的值,提示无法更新标识列 'id' 。解决方案: 在sql 里有 DBCC CHECKIDENT (dbo.Test, RESEED, 1)函数,它用于重设标识列id,第一个参数是表名,第三个参数是重设标识列的id值.如,我不小心把id=1的标识列给删了,

--我设置 id=0为起始值。
DBCC CHECKIDENT(table,reseed,0)
insert table values(1,....)
---再将起始值改为这张表的最后标识值。
DBCC CHECKIDENT(table,reseed,)

  

posted @ 2012-11-05 15:17  谭客  阅读(1180)  评论(0编辑  收藏  举报