存储过程中的SQL动态自动递增列

时间:2010-12-17 15:56:07

标签: sql sql-server-2008 stored-procedures auto-increment

我正在尝试使用动态的自动递增列编写存储过程[SQL 2008],并且这种语法已经逃过了我。

如果我有一个名为widget的表,其中包含一个名为widget_nm的列,我的目标是

SELECT [???] AS widget_id, widget_nm FROM widget

并获得以下结果

widget_id | widget_nm
1         | bob
2         | sally
3         | fred

我记得曾经这样做过,但我的记忆让我失望......有什么建议吗?

节日快乐!

3 个答案:

答案 0 :(得分:5)

你没有提到你正在使用的sql方言,

如果您使用的是mssql(Tsql)2005+,请使用Row_Number()函数

答案 1 :(得分:4)

您可以在SQL Server 2005及更高版本中使用ROW_NUMBER

SELECT ROW_NUMBER() OVER (ORDER BY widget_nm) AS widget_id, widget_nm
FROM widget
ORDER BY widget_nm

将按照widget_nm的顺序编号

答案 2 :(得分:0)

如果您使用的是SQL Server 2005,则为trivial