Ошибка MSSQL: не удалось связать идентификатор нескольких деталей - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь обновить поле в столбце, но обновляемые строки должны находиться в пределах диапазона номеров строк. Например, я хочу обновить конечное время для чисел от 5 до 50.

Пока что я написал следующее:

with updateRows (id, seqid) 
            as ( select id, ROW_NUMBER() over (order by caster) from table1) 
update table1 set modification_date = sysdatetimeoffset() where updateRows.seqid between 5 and 50; 

Когда я это делаю, я получаю ошибку на uniqueRows. Последовательное высказывание - не может быть привязан идентификатор multi-part 'updateRows.seqid'.

Может кто-нибудь, пожалуйста, помогите мне с этим.

1 Ответ

1 голос
/ 21 октября 2019

Использовать закрытие:

with toupdate as (
      select t1.*, ROW_NUMBER() over (order by caster) as seqnum
      from table1 t1
     ) 
update toupdate
    set modification_date = sysdatetimeoffset()
    where seqnum between 5 and 50; 

В основном есть два изменения:

  1. CTE выбирает все столбцы.
  2. update напрямую обновляетсяCTE, поэтому seqnum доступен для фильтрации.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...