请问这句SQL错在哪里?(50分)

  • 主题发起人 主题发起人 aries
  • 开始时间 开始时间
A

aries

Unregistered / Unconfirmed
GUEST, unregistred user!
用表B的unit字段更新表A的tmpunit字段,以
num为关键字,如下:

update A
set A.tmpunit=B.unit
where A.num=B.num

Delphi错误信息:Invalid field name:unit

(dbf文件)
本人第一次用update语句,各位高手见笑了。
 
unit字段存在吗?
 

update A
set A.tmpunit=B.unit
from A,B
where A.num=B.num
必须确定所有的字段存在。

 
我保证B.unit字段存在!
lodgue的方法我试了,系统提示:

Invalid use of key word.
token: from
Line number: 3
 
应如此:
UPDATE A,B
SET A.tmpunit=B.unit
where A.num=B.num

 
程云兄的方法也试过,还是不行:
Invalid use of key word.
token: ,B
set
Line number: 1

我想这难道是LOCAL SQL的局限,只能给字段赋固定的值?,而不支持表间的数据更新,不至于吧!
 
将unit字段用其它单词代替,unit是保留字。
 
有可能是aycc说的情况
 
update A
set A.tmpunit=
(select distinct B.unit from B where A.num=B.num)
 
A.num/B.num must is primary key, that's, sub_Query must return one record.
 
guojun是对的,在Ms sql & sybase 中,lodgue的也对。
 
guojun:
好像local sql 不支持这种语法。另外,primary key的含义能否稍微解释一下。
thanks
 
在Delphi中,UNIT是保留关键字,将UNIT改名,如:UNIT1等。
 
UNIT是保留字,UPDATE时会出错!
我碰到过,我改过一个人编写的程序,字段名用了max(保留字),结果害的我找了半天不知道什么错
误!:(
 
各位,问题应该不在保留字上,我把unit换成其他好几种名称,delphi仍然显示同样提示:invalid key word
 
update A
set A.tmpunit=B.unit
from B
where A.num=B.num
 
我在paradox下试过了 guojun兄的语法没有问题,请检查此目录
下是否有重名的.db。
 
我用的是Foxpro,有没有问题?
 
后退
顶部