みなさん、良い一日を。SQL ステートメントについて質問したいと思います。SQL Server 2008 を使用しており、Workflow Transaction というテーブルがあります。このテーブルには、12 のレコードがあります。下の写真は表の内容です。
私はこの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
)
私の目的は、OrderNumber が最大値より小さいリクエスト ID を更新することです。これは、WHERE 句内の SELECT ステートメントからの出力になります。ここで、更新されるレコードは、上記のレコードのみになると予想しています (コードでは、RequestId # 3 です)。
実際に起こったことは、更新されたレコードが 4 つだけではなく、5 つになりました! 既存の SQL ステートメントに問題はありますか?