在Sybase中更新表时出错

时间:2010-08-19 02:54:42

标签: sybase-ase

我在Sybase表上发出UPDATE语句,但是我收到以下错误:

  

Msg 325,Level 18,State 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 = ''
 )

任何见解都将不胜感激。

2 个答案:

答案 0 :(得分: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 :(得分:0)

尝试改为;

update TABLE1
   set SAMPLECOL = T2.SAMPLECOL
  from TABLE1 T1, TABLE2 T2
 where T1.COMMON = T2.COMMON
   and isnull(T1.SAMPLECOL, '') = ''