Один запрос на обновление таблицы в определенном порядке - PullRequest
0 голосов
/ 02 июля 2019

Допустим, мне нужна следующая таблица:

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, а затем обновить для каждой строки список рассылки, но упорядоченный по списку.

Что-то вроде:

UPDATE table SET listorder = (select id from table order by listorder)

1 Ответ

1 голос
/ 02 июля 2019

Я думаю, что следующий запрос должен работать для вас.

;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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...