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,)