SQL Server中的错误更新
更新查询可以工作,但不正确 有什么问题SQL Server中的错误更新,sql,sql-server,tsql,sql-update,Sql,Sql Server,Tsql,Sql Update,更新查询可以工作,但不正确 有什么问题 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())
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
结果是正确的我想这可能会做你想做的事-但我猜你没有完全理解你想做什么
UPDATE C SET
discount = 10
FROM ORDERS C
WHERE C.dateOrder between '01.07.2013' and GETDATE()
-- Updating only orders with an existing discount
AND C.discount IS NOT NULL
-- And with more than 1 order line
AND (
SELECT COUNT(*)
FROM OrderItems AS O
WHERE O.orderID = C.orderID
) > 1
我想这可能会做你想做的事——但我猜你并不完全了解你想做什么
UPDATE C SET
discount = 10
FROM ORDERS C
WHERE C.dateOrder between '01.07.2013' and GETDATE()
-- Updating only orders with an existing discount
AND C.discount IS NOT NULL
-- And with more than 1 order line
AND (
SELECT COUNT(*)
FROM OrderItems AS O
WHERE O.orderID = C.orderID
) > 1
“不正确”的实际含义是什么?您似乎没有引用您在exists子句中更新的表…我们不知道您试图实现什么,因此您需要解释这一点,以便我们了解它是如何不起作用的。查询显示两列。更新更新了整个表,请显示一些示例数据和预期结果。并尝试用文字解释,例如“我想用折扣更新所有订单,并用多个订单行更新10%的新折扣”。什么是“不正确”的实际含义?您似乎没有引用您在exists子句中更新的表格…我们不知道您试图实现什么,所以你需要解释一下,这样我们才能理解它是如何不起作用的。更新更新了整个表,请显示一些示例数据和预期结果。并尝试用文字解释,例如“我想用折扣更新所有订单,并使用多个订单行以获得10%的新折扣”。