Von Ihrem ersten Posting, es sieht aus wie Sie nur P_C
aktualisieren wollte, wenn es null
war. Verwenden Sie in diesem Fall P_C is null
. Ein Null-Wert ist nie gleich (=) für irgendetwas, das eine andere Null enthält. Sie müssen is null
verwenden.
UPDATE Tnm_Lookup
SET P_C = 'C'
where Tnm_Lookup_ID in (
select top (355) Tnm_Lookup_ID
from Tnm_Lookup
where P_C is NULL
order by Tnm_Lookup_ID DESC)
Wenn Sie Tnm_Lookup_ID
nur in den oberen 355 Zeilen der gesamten Tabelle suchen in absteigender Reihenfolge, dann, wenn Tnm_Lookup
viele Zeilen hat, sind Sie wahrscheinlich die, die Sie wollen verpassen. where P_C is null
hilft, weil Sie nur die Zeilen zurückgeben, in denen P_C
noch nicht aktualisiert wurde.
Dennoch ist es riskant, die Suche auf eine feste Zahl zu beschränken, es sei denn, Sie wissen sicher, dass nie mehr als 355 Zeilen auf ein Update warten werden.
Warum der 355? Wenn es nur um Effizienz geht, lohnt es sich nicht, die Suche zu beschleunigen, wenn Fälle übersehen werden.
Ist das, was Sie wollten?
UPDATE Tnm_Lookup SET P_C = 'C'
where P_C is NULL
Wenn ich falsch erraten haben, dann sollten Sie die Frage bearbeiten, um die top (355)
zu erklären.
Gibt es Datensätze, in denen 'P_C = NULL' steht? Wenn Sie die Unterabfrage selbst ausführen, gibt sie irgendwelche Datensätze zurück? –
Mit "nicht funktioniert" meinst du es tut nichts oder SQL Server meldet einen Fehler? Wenn es ein Fehler ist, was ist der Fehler? –