Ich vermute, dass die StatusRawCode-Werte, die von Ihrer Unterabfrage zurückgegeben werden, Werte sind, die in den 34 Datensätzen verwendet werden, die aktualisiert wurden. Anstelle von
WHERE StatusRawCode IN
Verwenden Sie dies:
UPDATE
Message
SET StatusRawCode = 25
WHERE PrimaryKey in
(
Select TOP 5
PrimaryKey
From Message as M2
Where M2.StatusRawCode = 5
)
Im Wesentlichen werden Sie die Primärschlüssel der 5 Zeilen auswählen, die in der Unterabfrage aktualisiert werden sollen. Beachten Sie, dass dadurch nur die obersten 5 Datensätze auf der Grundlage der Cluster-Indexreihenfolge Ihrer Tabelle aktualisiert werden. Fügen Sie eine Order-By-Klausel hinzu, wenn Sie ein bestimmtes Kriterium für die TOP 5-Datensätze angeben möchten.
Wenn es zum Beispiel eine Spalte mit dem Namen Rang gibt, die Sie als Kriterium verwenden möchten, schreiben Sie Ihre Abfrage wie folgt:
UPDATE
Message
SET
StatusRawCode = 25
WHERE
PrimaryKey IN
(
SELECT TOP 5
PrimaryKey
FROM
Message as M2
WHERE
M2.StatusRawCode = 5
ORDER BY
Rank DESC
)
So erhalten Sie die TOP 5 Datensätze basierend auf den Werten der Spalte Rang. Sie können Ihre Spalte nach Bedarf ersetzen.