【问题标题】:SQL dynamic auto incrementing column in stored procedure存储过程中的 SQL 动态自动递增列
【发布时间】:2011-05-27 05:07:58
【问题描述】:

我正在尝试编写一个带有动态、自动递增列的存储过程 [SQL 2008],但我已经忽略了它的语法。

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

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

得到如下结果

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

我记得如何做到这一点,但我的记忆力下降了...有什么建议吗?

节日快乐!

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您可以在 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的顺序编号

      【讨论】:

        【解决方案3】:

        你没有提到你使用的是什么sql方言,

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

        【讨论】:

        • 他将问题标记为 SQL Server 2008...也是 +1
        • 我认为该标签是在我回答后添加的,否则我会失明:S
        猜你喜欢
        • 2020-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-15
        • 1970-01-01
        • 2011-02-27
        • 1970-01-01
        相关资源
        最近更新 更多