TSQL递增变量计数

时间:2016-06-20 22:49:33

标签: sql-server tsql stored-procedures sql-server-2012

我有一个UI,允许用户选择他们想要添加到表中的一个或多个字段。此数据还与orderID关联,用于确定字段顺序。

当用户添加新字段时,我需要找到此用户使用的最后一个orderID并将其递增1,然后提交所有新字段。

例如,如果数据库中已存在单个记录,则其{1}将为1.当我选择添加另外三个字段时,它将检查最后一个{{1我使用(1)然后为它添加的每个新记录增加它,1-4。

orderID

显然orderID部分是我的问题所在,但希望有助于理解我想要做的事情。

可以使用哪种其他方法来解决这个问题?

3 个答案:

答案 0 :(得分:1)

ROW_NUMBER()应该这样做。

select  x.Value,
        ROW_NUMBER() over (order by x.Value) + @lastID
    from (
        select 10 ParamValues.x1.value('selected[1]', 'int') Value
            from @xml.nodes('/root/data/fields/field') AS ParamValues(x1)
        ) x

答案 1 :(得分:0)

您可以使用IDENTITY(1,1)

的列

答案 2 :(得分:0)

如果您希望OrderID在整个表格中都是唯一的,请参阅以下内容:

点击here以查看解决此问题的其他帖子。

有多种方法可以解决这个问题,但在这种情况下,最简单但合理的方法可能是使用标识列。但是,这不像使用序列那样可扩展。如果您认为将来可能需要更多灵活性,请使用序列。

如果您希望OrderID在一个批次中插入的字段中是唯一的,请参阅以下内容:

你应该仔细看看Chris Steele的回答。