Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
TSQL中的更新查询抛出错误_Sql_Sql Server 2008_Tsql - Fatal编程技术网

TSQL中的更新查询抛出错误

TSQL中的更新查询抛出错误,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,我正在尝试运行一个更新查询,似乎很简单,我正在将所有字段InitialCharge更新为值为'21.61',只要当前InitialCharge='20.72',我还有一些其他符合条件的字段。我得到一个错误: 子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时 这是我的查询,我尝试使用“IN”和“Exists”,但两者都不起作用: update [dbo].[tTransactionHistory] set InitialCharge = '21.61' Where e

我正在尝试运行一个更新查询,似乎很简单,我正在将所有字段InitialCharge更新为值为'21.61',只要当前InitialCharge='20.72',我还有一些其他符合条件的字段。我得到一个错误:

子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时

这是我的查询,我尝试使用“IN”和“Exists”,但两者都不起作用:

 update [dbo].[tTransactionHistory]
  set InitialCharge = '21.61'
   Where exists( 

                        select InitialCharge from [dbo].[tTransactionHistory]
                         where ProcedureID = '-747422922' and InitialCharge = ('20.72') and (DateOfService >= '09/01/2014' and DateOfService < '10/01/2014')

                         )

您尚未将查询锁定到特定行

试一试


如果这不是您想要的,我希望您能大致了解。

我不明白您为什么需要EXISTs子查询

UPDATE [dbo].[tTransactionHistory]
SET InitialCharge = '21.61'
WHERE
    ProcedureID = '-747422922' AND
    InitialCharge = '20.72' AND
    (DateOfService >= '2014/09/01' and DateOfService < '2014/10/01')
更新[dbo].[ttTransactionHistory]
设置初始费用='21.61'
哪里
程序ID='-7422922'和
初始费用='20.72'和
(服务日期>='2014/09/01'和服务日期<'2014/10/01')

您确定表列是字符串吗???

问题是表上的触发器,而不是查询:(

您需要关联您的查询,以防您正在使用Exist。我也尝试过直接更新,但没有使用Exists或in,结果出现了错误。您可以在这里解释一下逻辑吗?哪些记录需要更新?提示:使用适当的软件(MySQL、Oracle、DB2等)标记数据库问题很有帮助和版本,例如,
sql-server-2014
。语法和功能的差异通常会影响答案。问题是我没有源代码的VB6应用程序使用了该公司收取的错误费率。它在应用程序中硬编码。因此,与其让他们手动编辑300条记录,我尝试用sql更新它,我认为这是错误的uld simple:/我尝试了Exists,因为我得到了一个错误,我在谷歌上搜索了它,有人建议了它。我在你的查询中也得到了同样的错误。所以当我读到这个错误时,它说当子查询返回多个记录时你不能更新。我从来没有见过这个错误。你怎么会得到相同的“子查询返回了多个值…”当没有子查询时,此项出现错误。最好的解决方案可能是一个良好的nap;)InitialCharge字段是一个小数点,但当我删除单引号时,它仍然出错。我发现了问题…此表上有一个触发器:(这是抛出错误,而不是查询..这让我疯狂了一个多小时…感谢帮助人员。
UPDATE T1
SET InitialCharge = '21.61'
FROM tTransactionHistory T1
WHERE ProcedureID = '-747422922'
AND EXISTS (
    SELECT InitialCharge  
    FROM tTransactionHistory T2
    WHERE T2.ProcedureID = T1.ProcedureID  -- This links the EXISTS to the update
    AND DateOfService BETWEEN '09/01/2014' AND '10/01/2014'
    AND InitialCharge = '20.72')
UPDATE [dbo].[tTransactionHistory]
SET InitialCharge = '21.61'
WHERE
    ProcedureID = '-747422922' AND
    InitialCharge = '20.72' AND
    (DateOfService >= '2014/09/01' and DateOfService < '2014/10/01')