Я предполагаю, что значения StatusRawCode, возвращаемые из вашего подзапроса, являются значениями, использованными в 34 записях, которые были обновлены. Вместо
WHERE StatusRawCode IN
Используйте это:
UPDATE
Message
SET StatusRawCode = 25
WHERE PrimaryKey in
(
Select TOP 5
PrimaryKey
From Message as M2
Where M2.StatusRawCode = 5
)
По сути, вы будете выбирать первичные ключи из 5 строк, которые будут обновлены в подзапросе. Имейте в виду, что это обновит только первые 5 записей на основе упорядоченного кластеризованного индекса вашей таблицы. Вы захотите добавить заказ по предложению, если вам нужно указать конкретные критерии для записей TOP 5.
Например, если есть столбец под названием «Ранг», который вы хотите использовать в качестве критерия, напишите запрос следующим образом:
UPDATE
Message
SET
StatusRawCode = 25
WHERE
PrimaryKey IN
(
SELECT TOP 5
PrimaryKey
FROM
Message as M2
WHERE
M2.StatusRawCode = 5
ORDER BY
Rank DESC
)
Это даст вам ТОП 5 записей на основе значений столбца Ранг. При необходимости вы можете заменить свой столбец.