让我说一下下表:
id LISTORDER ARTIKEL_NR
209321 1 F99-
219268 2 F99-0013663
209323 3 FLB-0000035
209324 4 FLB-0000142
209325 5 INK-0000012
209322 6 FLB-0000019
209326 7 INK-0000003
209327 8 ENE-1
209328 9 ENE-2
209329 10 CON-0000028
现在,我想将LISTORDER列更改为id列中的数字,以使结果为:
id LISTORDER ARTIKEL_NR
209321 209321 F99-
219268 209322 F99-0013663
209323 209323 FLB-0000035
209324 209324 FLB-0000142
209325 209325 INK-0000012
209322 209326 FLB-0000019
209326 209327 INK-0000003
209327 209328 ENE-1
209328 209329 ENE-2
209329 219268 CON-0000028
因此,顺序保持不变,但我在其他顺序中使用了原始ID号。一个查询有可能吗? 否则,我必须保存按id排序的查询的结果,然后为listorder的每一行进行更新,但是按listorder的顺序进行更新。
类似的东西:
UPDATE table SET listorder = (select id from table order by listorder)
答案 0 :(得分:1)
我认为下面的查询应该对您有用。
;with cte as(
Select RN=ROW_NUMBER() over(order by id),id from #YourTable
)
update t set t.LISTORDER=c.id
from cte c join #YourTable t on c.RN=t.LISTORDER