【发布时间】:2023-03-13 01:05:02
【问题描述】:
更新查询有效,但不正确。
有什么问题?
UPDATE Orders
SET discount = 10
WHERE EXISTS (SELECT C.discount
FROM Orders AS C
JOIN OrderItems AS O ON C.orderID = O.orderID
WHERE (C.dateOrder BETWEEN '01.07.2013' AND GETDATE())
GROUP BY C.discount
HAVING COUNT(O.orderID) > 1)
这本身就有效
SELECT C.discount
FROM Orders AS C
JOIN OrderItems AS O ON C.orderID = O.orderID
WHERE (C.dateOrder BETWEEN '01.07.2013' AND GETDATE())
GROUP BY C.discount
HAVING COUNT(O.orderID) > 1
而且结果是正确的
【问题讨论】:
-
“不正确”究竟是什么意思?
-
您似乎没有引用您在存在子句中更新的表...
-
我们不知道您要达到什么目的,因此您需要解释一下,以便我们了解它是如何不起作用的。
-
查询显示 2 列。更新更新整个表
-
所以请展示一些示例数据,以及您的预期结果。并尝试用文字进行解释,例如“我想更新所有带有折扣的订单和多个订单行以获得 10% 的新折扣”。
标签: sql sql-server tsql sql-update