0

我正在对 Sybase 表发出 UPDATE 语句,但出现以下错误:

消息 325,级别 18,状态 4:服务器“开发”,第 1 行:Adaptive Server 找不到此语句的合法查询计划。如果抽象计划强制执行查询计划,请检查其与查询的对应关系。如果没有,请联系 Sybase 技术支持。

这是我的更新声明。

 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
 )

(这将只选择一个行记录,并且您的逻辑可能无法基于此工作,但是就您得到的错误而言,我确信与此有关)。再试一次,让我们知道结果。

于 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 回答