-1

我需要对系列UPDATE中的多条记录运行语句ORDER BY。这是因为我的更新包含一个标量函数,它使用早期更新的值。除了按所需顺序循环之外,任何人都可以提出更好的方法吗?


对不起,我应该早点做的,场景是..

我的问题是我有一个表变量,它有分层记录,

ID SlNo 结果

1 1.0 真

2 1.1 真

3 1.1.1 真

4 1.1.2 错误

5 1.2 真

6 1.2.1 错误

7 1.2.2 错误

8 1.2.3 错误

9 1.2.4 错误

树结构是,

1.0

1.0 > 1.1

1.0 > 1.1 > 1.1.1

1.0 > 1.1 > 1.1.2

1.0 > 1.2

1.0 > 1.2 > 2.2.1

1.0 > 1.2 > 2.2.2

1.0 > 1.2 > 2.2.3

1.0 > 1.2 > 2.2.4

我想将结果更新到一个表中,如果所有子分支都是“False”,那么它的父分支应该是“False”。为此,我需要更新“降序”中的行,并且还必须看到它的所有子分支都是“False”。我可以在单个更新语句中执行此操作吗?如何在“我的更新查询”中说“订购依据”?

4

1 回答 1

2

编写一个查询,使用选择生成您想要的值。此查询可能会使用 row_number() 函数来确保排序。

然后,使用此查询进行更新。

举个简单的例子,如果你想将一个列更新为一个表的序列号,其中顺序由 col1 指定,那么你可以这样做:

select t.*, row_number() over (partition by NULL order by col1) as seqnum
from table t

现在将其放入更新中:

with newvals (select t.*,
                     row_number() over (partition by NULL order by col1) as seqnum
              from table t
             )
update table
    set column = seqnum
from t
where t.id = table.id
于 2012-05-14T13:26:17.617 回答