示例场景:
我知道下面的代码不起作用,但这是我想要实现的一个例子:
UPDATE OrdersTable SET OrderComplete = 1
FROM PartsTable
WHERE
OrdersTable.OrderID = (SELECT TOP 1 OrderID FROM OrdersTable ORDER BY changedate DESC)
AND
COUNT(PartsTable.ItemReceived) = COUNT(PartsTable.EquipmentID)
所以当每个单独的部分都设置为已收到( ItemReceived )时,我希望COUNT
函数将此列与 EquipmentID 进行比较
示例1
在这种情况下,4不等于5,所以没有任何反应
示例2
在这种情况下,5等于5,所以 OrderComplete 应该等于 TRUE
感谢您对此问题的任何帮助
答案 0 :(得分:1)
您可以使用NOT EXISTS
代替COUNT
。
当没有等待接收的部分时,这将UPDATE
全部Orders
完成。如果还有一个或多个部件仍在等待接收,那么订单将不会更新以完成。
NOT EXISTS
中的加入可能不正确,因为我不确定OrdersTable
如何链接到PartsTable
,但它应该让您朝着正确的方向前进。
UPDATE
OrdersTable
SET
OrderComplete = 'TRUE'
FROM
OrdersTable
WHERE
NOT EXISTS
(
SELECT *
FROM PartsTable
WHERE ItemReceived = 'FALSE'
AND OrdersTable.Id = PartsTable.Id
)