【问题标题】:Update Column existing values Order by a other column then the ID更新列现有值按其他列排序,然后按 ID
【发布时间】:2015-04-20 18:51:15
【问题描述】:

我是 SQL 新手,无法通过管理控制台进入数据库。 我没有密码,所以我需要使用 Query 来完成所有操作。

在数据库中有一个Tag Position,但是这个是按照Bundle Tag的顺序排列的,这个Tag位置是用来在应用程序中创建项目树的。 而且我们可以'按项目号排序,所以所有项目都是无序的,所以我需要更新这个专栏。 我发现了这个。

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 更新。

感谢您的帮助,我已经为这个问题苦恼了好几天。

雨果

【问题讨论】:

  • 哪个 dbms? (解决办法就靠它了……)
  • 除了添加适当的数据库标签外,请使用示例数据和所需结果编辑您的问题。这总是有助于澄清问题的真正含义。
  • @Gordon SQL Server 2008

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


【解决方案1】:

如果我理解正确,您需要基于另一列的顺序排序。这建议使用 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多