在TSQL抛出错误中更新查询

时间:2016-09-28 15:19:58

标签: sql sql-server-2008 tsql

我正在尝试运行更新查询,看起来很简单我将所有字段InitialCharge更新为' 21.61'在当前的InitialCharge =' 20.72',我还有其他一些限定字段。我收到了错误:

  

子查询返回的值超过1。子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时不允许这样做

这是我的查询,我尝试使用" IN"和#34;存在"但是都不起作用:

 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')

                         )

我甚至尝试了一个简单的更新查询,但我得到了错误,我从未遇到过这个问题,试图只更新几个字段

  update [dbo].[tTransactionHistory]
  set InitialCharge = '21.61'
  where InitialCharge = '20.72'

validate and sanitize

3 个答案:

答案 0 :(得分:0)

您尚未将查询固定到特定行。 尝试 更新T1 SET InitialCharge =&#39; 21.61&#39; 来自tTransactionHistory T1 WHERE ProcedureID =&#39; -747422922&#39; 和EXISTS(     SELECT InitialCharge     来自tTransactionHistory T2     WHERE T2.ProcedureID = T1.ProcedureID - 这将EXISTS链接到更新     和DateOfService BETWEEN&#39; 09/01/2014&#39; AND&#39; 10/01/2014&#39;     AND InitialCharge =&#39; 20.72&#39;) 如果那不完全是你想要的,我希望你能得到一般的想法。

答案 1 :(得分:0)

我很困惑为什么你需要一个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')

你确定表列是字符串??

答案 2 :(得分:0)

问题是桌子上的触发器,它不是查询:(