2010-10-14 32 views
4

我想用增量值更新一个表的名字和姓氏。例如: -如何使用tsql更新列的增量值?

ID FirstName 
1 Demo_01  
2. Demo_02 
3. Demo_03 
4. And so on.... 

此表有1000个记录。但为了演示的目的,我们不想分享真实姓名。所以请帮助如何通过一个

回答

7
;with cte as 
(
SELECT FirstName, ROW_NUMBER() OVER (ORDER BY ID) RN 
FROM YourTable 
) 

UPDATE cte 
SET FirstName = 'Demo_ ' + CAST(RN AS VARCHAR(10)) 

更新与“Demo_ +增量值名字或你的意思是你要直接使用ID字段

UPDATE YourTable 
SET FirstName = 'Demo_ ' + CAST(ID AS VARCHAR(10)) 

注意:?你说你有成千上万的记录,但很明显,他们不适合在Demo_01格式。说你要允许高达6个位数,并垫,你可以使用类似前导零。

UPDATE YourTable 
SET FirstName = 'Demo_ ' + RIGHT('000000' + CAST(ID AS VARCHAR(6)),6) 
+0

太美好了。谢谢 – Jango 2010-10-14 13:42:39

0

对于MySQL

UPDATE tablename SET FirstName = CONCAT('Demo_',ID); 
+1

除了他问TSQL,不是MySQL – LittleBobbyTables 2010-10-14 13:43:24

+0

对不起我的错误。我错过了。 – 2010-10-14 13:52:05

+0

关于你的答案没有问题,如果这个工作适用于mysql – Ajay2707 2017-11-03 12:03:20

1

没有CTE:

DECLARE @NewID INT; 

SET @NewID = 0; 

UPDATE myTable 
SET @NewID = ID = @NewID + 1 

UPDATE myTable 
SET FirstName = 'Demo_ ' + RIGHT('000000' + CAST(ID AS VARCHAR(6)),6)