2012-05-03 14 views
0

次のクエリを実行すると、ゼロ行が影響を受けます。誰かが私にこれを解決するのを助けることができる?SQL Serverクエリのヘルプが必要

UPDATE PLAN 
SET PLANID = (SELECT PLANID FROM MODE WHERE [NAME]='Sam') 
WHERE CUSTOMERID IN (SELECT CUSTOMERID FROM ENTITYCUSTOMER WHERE EMPID = 707) 

(SELECT PLANID FROM MODE WHERE [NAME]='Sam')は、複数の値を返すことができる単一のコード

(SELECT CUSTOMERID FROM ENTITYCUSTOMER WHERE EMPID = 707)

を返します。

解決策が必要ですか。ありがとう

+1

明らかな質問:SELECT CustomerId FROM EntityCustomerをEmpId = 707で実行すると、結果は実際に得られますか?もしそうなら、CustomerIdフィールドにこれらの値を持つPlanテーブルのレコードを見ることができますか? – patmortech

+1

エラーがありますか?影響を受けるのは0行だけですか?どちらのサブクエリにも結果がありますか? PLANテーブルに2番目のサブクエリの結果と一致する行がありますか? – dpp

+0

また、MODEテーブルにSamが1つしかないかどうか確認してください。 – dpp

答えて

0
SELECT PLANID FROM MODE WHERE [NAME]='Sam' 

'MODE'テーブルはPLANIDにキー入力することはできません。更新に特定の値をバインドすることはできません。 1つのオプションは、カーソルを作成し、更新する正しい値を読み取ることです。もう1つは、あなたが使用しているクライアントコード言語(おそらく.net langugage?)でこれを行うことです。

+0

値が返されなかった場合、PLANIDはnullに設定されますが、PlanIDがnullを許可しなかった場合はエラーが発生します。いずれにしても、サブクエリは更新ステートメントの影響を受ける行の数には影響しません。 – patmortech

+0

右ですが、(可能な)複数の値で1つの列を更新することはできません。 – dwerner

+0

彼は彼のポストで、ただ一つの価値しか返さなかったと言った。複数のレコードを返そうとするとエラーになります。 – patmortech