更新列现有值按其他列排序,然后按ID排序

时间:2015-02-19 12:16:21

标签: sql sql-server sql-server-2008 sql-update

我退出SQL新手,我无法通过管理器控制台输入数据库。 我没有密码,所以我需要使用Query进行所有操作。

在数据库中有一个标记位置,但是这个位置是Bundle标记的顺序,此标记位置用于在应用程序中创建项目树。 在那里我们可以按项目编号排序,因此所有项目都是无序的,所以我需要更新这个专栏。 我发现了这个。

1。删除bun_tagposition

中的值的第一步
UPDATE tew_bundle SET bun_tagposition = null

2。在bun_tagposition

中插入新值的第二步
SELECT DISTINCT bun_tag , bun_tagposition
FROM tew_bundle

DECLARE @id INT

SET @id = 0 

UPDATE tew_bundle 

SET @id = bun_tagposition = @id + 1

此代码工作正常,但顺序错误此代码具有bun_id的顺序 我需要bun_tag的顺序,这是项目否

有没有办法解决这个问题,要对代码说必须更新,请遵循bun_tag。

感谢您的帮助,我已经在这个问题上度过了几天。

雨果

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您需要基于另一列的顺序排序。这表明使用row_number()和可更新的CTE:

with toupdate as (
      select tb.*,
             row_number() over (order by projectno) as seqnum
      from tew_bundle tb
     )
update toupdate
    set bun_tagposition = seqnum;