今天是个好日子。我想问一个关于我的 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)。
实际发生的情况不是只更新了四条记录,而是变成了五 (5) 条!我现有的 SQL 语句有问题吗?