みなさんこんにちは。私は私のSQLステートメントに関する質問をしたいと思います。私はSQL Server 2008を使用しており、Workflow Transactionというテーブルを持っています。この表には、12のレコードがあります。下の写真はテーブルの内容です。サブクエリを使用したUPDATE - 必要なレコード以上の更新
私は、この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
)
私の目的は、内部のSELECT文から出力される、最大未満の注文番号を持っている要求IDを更新することですWHERE句。今、私は、更新されるレコードが上記のレコードだけであることを期待しています(コードでは、それはRequestId#3です)。
実際に何が起こったかは、4つのレコードが更新されていたのではなく、5つになりました!既存のSQL文に問題はありますか?
:私はあなたが探していたと思うことのようなものでした。注文番号よりも低いレコードを更新することを目指しています。つまり、最新のレコードより前にレコードを更新します。 –
@ Ju-chan:私の質問がうまくいくとわかっている限り、テストしましたか? –