Guten Tag an alle. Ich möchte eine Frage zu meiner SQL-Anweisung stellen. Ich verwende SQL Server 2008 und hat eine Tabelle namens Workflow-Transaktion. In dieser Tabelle habe ich 12 Datensätze. Das Bild unten ist der Inhalt der Tabelle.UPDATE mit Unterabfragen - Updates mehr als die benötigten Datensätze
Ich habe diese SQL-Anweisung:
UPDATE Workflow_Txn
SET Status = 1
WHERE [RequestId] IN
(
SELECT [RequestId]
FROM Workflow_Txn
WHERE [OrderNumber] < (SELECT MAX(OrderNumber) FROM Workflow_Txn WHERE RequestId = 3)
AND RequestId = 3
)
Mein Ziel ist es, eine Anforderungs-ID zu aktualisieren, die die Auftragsnummer von weniger als das Maximum, das die Ausgabe von der SELECT-Anweisung in seinem die WHERE-Klausel. Jetzt erwarte ich, dass die zu aktualisierenden Datensätze nur die besagten Datensätze sind (im Code ist es RequestId # 3).
Was tatsächlich passiert ist, wurde statt nur vier Datensätze aktualisiert, es wird fünf (5)! Gibt es ein Problem mit meiner bestehenden SQL-Anweisung?
Ich denke, was Sie mir gezeigt haben, war einfacher als meins. Ich beabsichtige, die Datensätze zu aktualisieren, die niedriger als die Bestellnummer sind, d.h. ich würde die Datensätze vor dem letzten Datensatz aktualisieren. –
@ Ju-chan: Soweit ich verstehe meine Abfrage sollte funktionieren, haben Sie es getestet? –