Buona giornata a tutti. Vorrei fare una domanda riguardo la mia dichiarazione SQL. Sto usando SQL Server 2008 e ho una tabella chiamata Workflow Transaction. In questa tabella, ho 12 record. L'immagine sotto è il contenuto della tabella.UPDATE utilizzando sottoquery - Aggiorna più dei record necessari
ho questa istruzione SQL:
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
)
Il mio obiettivo è quello di aggiornare un ID di richiesta che ha l'OrderNumber inferiore a quella massima, che sarà l'uscita dal SELECT all'interno la clausola WHERE. Ora mi aspetto che i record da aggiornare siano solo i detti record (nel codice, è RequestId # 3).
In realtà, invece di solo quattro record aggiornati, diventa cinque (5)! C'è un problema con la mia dichiarazione SQL esistente?
Penso che quello che mi hai mostrato fosse più semplice del mio. Sto mirando ad aggiornare i record inferiori al numero dell'ordine, cioè aggiornerei i record prima dell'ultimo record. –
@ Ju-chan: Per quanto ho capito, la mia query dovrebbe funzionare, l'hai provato? –