2016-09-28 21 views
-2

更新クエリを実行しようとしていますが、現在のInitialCharge = '20 .72 'のすべてのフィールドInitialChargeを'21 .61'の値に更新するだけで十分です。予選フィールド。私はエラーを取得しています:ここでTSQLでクエリを更新するとエラーが発生する

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression

は私のクエリで、私は「IN」を使用してみましたし、「存在」が、どちらも仕事:

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' 

Error Screen Shot

+1

あなたが使用している場合には、クエリを相関させる必要があるが、私はちょうどまっすぐ更新を行うだけでなく使用していない試みた – TheGameiswar

+0

が存在する波平存在しますか –

+0

ここでロジックを説明できますか?更新が必要なレコード – JohnHC

答えて

0

私はあなたがすべて...

UPDATE [dbo].[tTransactionHistory] 
SET InitialCharge = '21.61' 
WHERE 
    ProcedureID = '-747422922' AND 
    InitialCharge = '20.72' AND 
    (DateOfService >= '2014/09/01' and DateOfService < '2014/10/01') 

でサブクエリを存在し、表の列が文字列であることを確認している必要がある理由で混乱しています?

+0

私が得たエラーのためExistsを試しました。私はそれを見つけ、誰かがそれを提案しました。あなたの質問にも同じエラーが出ます。 –

+0

それで、私がエラーを読むと、サブクエリが複数のレコードを返すときに更新できないと言っていますか?私はこのエラーを見たことがありません。 –

+0

サブクエリが存在しない場合、どのように同じ「サブクエリが1より大きい値を返しました...」というエラーが発生する可能性があります。最良の解決策は良い昼寝かもしれません;) – Mark

0

を更新しようとし、この問題に遭遇することはありませんクエリを特定の行に固定しませんでした。

それはあなたが探していたまさにはない場合、私はあなたが一般的なアイデアを得る願ってい

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

を試してみてください。

+0

私はこのクエリで同じエラーを受け取ります。 –

0

問題がテーブルの上にトリガーだった、それは問い合わせ:(

関連する問題