2016-06-10 8 views
-4
UPDATE Tnm_Lookup SET 
    P_C = 'C' 
    where Tnm_Lookup_ID in (select top (355) Tnm_Lookup_ID from Tnm_Lookup where 
Tnm_Lookup_ID = Tnm_Lookup_ID order by Tnm_Lookup_ID DESC); 

Ich verstehe nicht, warum diese Anweisung zuvor funktioniert hat und jetzt wird es nicht mehr meine Tabelle aktualisieren. Kann mir jemand einen Einblick geben, warum das nicht funktioniert?SQL-Anweisung Einblick

+2

Gibt es Datensätze, in denen 'P_C = NULL' steht? Wenn Sie die Unterabfrage selbst ausführen, gibt sie irgendwelche Datensätze zurück? –

+2

Mit "nicht funktioniert" meinst du es tut nichts oder SQL Server meldet einen Fehler? Wenn es ein Fehler ist, was ist der Fehler? –

Antwort

0

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.

2

Nun, gibt das irgendwelche Datensätze zurück?

select top (355) Tnm_Lookup_ID 
from Tnm_Lookup 
where P_C = NULL 
order by Tnm_Lookup_ID DESC 
+0

Es gab nicht die falsche Abfrage in der Post. Ich habe aktualisiert. Jetzt funktioniert das. Ich ändere nie etwas in der Tabelle. – user2516641

+1

Wirklich haben Sie "Wo Tnm_Lookup_ID = Tnm_Lookup_ID" in der * real * Abfrage? – Paparazzi

+0

User251 .. sollte Paparazzi Kredit geben, wenn Sie antworten. Er wies darauf hin, dass die Unterabfrage keine Zeilen zum Aktualisieren zurückgab. –

Verwandte Themen