将顺序值分配给Sql server中的ID列

时间:2013-07-15 07:34:39

标签: sql database

我最近坐在一次采访中,评估我的人让我写下一个剧情来讲述以下情景。根据他的说法,他从其他系统导入了一个数据库,其中包含一个名为Employees的表。现在该表中有三列是Emp_Name,Age和Salary,但该表没有ID列。他让我写了一个脚本,它将在表中添加ID列,然后是一个更新语句,用于更新带有顺序值的ID列(第一个记录从1,2,3开始)。我添加了ID列,但无法编写更新语句,即使在一周后,我仍然无法弄清楚我是如何实现这一点的。关于我应该怎么做的任何想法?

3 个答案:

答案 0 :(得分:1)

UPDATE employees
SET id=(SELECT COUNT(*) FROM employees e2 WHERE e2.Emp_Name < e1.Emp_Name)+1
FROM employees e1

只有当失败(重复名称)时,我才会在子选择中添加第二个条件,以便添加年龄和可能的工资来区分记录。

答案 1 :(得分:0)

这是一个棘手的问题。您不能通过这种方式来反对实际的员工编号,因此这个ID只是一个代理键。将您的新ID创建为IDENTITY(SQL Server),它将为您填充。订单无关紧要。

答案 2 :(得分:0)

alter table Employees
add EmpID int Identity(1,1)

试试这个应该有效。