我在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 = ''
)
任何见解都将不胜感激。
答案 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, '') = ''