Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server中的错误更新_Sql_Sql Server_Tsql_Sql Update - Fatal编程技术网

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%的新折扣”。