0

Sybase テーブルで UPDATE ステートメントを発行していますが、次のエラーが発生します。

メッセージ 325、レベル 18、状態 4: サーバ 'dev'、行 1: Adaptive Server は、この文に有効なクエリ プランを検出しません。抽象プランがクエリ プランを強制している場合は、クエリとの対応を確認してください。そうでない場合は、Sybase テクニカル サポートに連絡してください。

これが私のUPDATEステートメントです。

 Update TABLE1 SET SAMPLECOL = (
   Select
   TABLE2.SAMPLECOL
   from TABLE2
   where
   TABLE2.COMMON_ID = TABLE1.COMMON_ID
 )
 where
 TABLE1.TABLE1_ID in (
   Select
   TABLE1.TABLE1_ID
   from TABLE1
   inner join TABLE2
   on TABLE1.COMMON_ID = TABLE2.COMMON_ID
   where TABLE1.SAMPLECOL = ''
 )

どんな洞察も大歓迎です。

4

2 に答える 2

1

問題は、SAMPLECOL複数の値を返す可能性のあるもので列を設定していることだと思います。これを試して、結果をここに投稿してください。

Update TABLE1 SET SAMPLECOL = (
   set rowcount 1
   Select 
   TABLE2.SAMPLECOL
   from TABLE2
   where
   TABLE2.COMMON_ID = TABLE1.COMMON_ID
   set rowcount 0
 )

(これは1つの行レコードのみを選択し、これに基づいてロジックが機能しない可能性がありますが、取得しているエラーがこれに関連していると確信しています)。もう一度試してみて、結果をお知らせください。

于 2010-08-19T03:10:14.777 に答える
0

代わりに試してください。

update TABLE1
   set SAMPLECOL = T2.SAMPLECOL
  from TABLE1 T1, TABLE2 T2
 where T1.COMMON = T2.COMMON
   and isnull(T1.SAMPLECOL, '') = ''
于 2010-08-27T06:57:22.943 に答える