回 帖 发 新 帖 刷新版面

主题:关于两表的update SQL和表名

命令目标,查找zxdmk中对应DM(代码)的名称,用来替换6005KHBPB对应BYZXDM(代码)的BYZXMC(名称)

UPDATE 6005KHBPB SET BYZXMC=B.MC FROM 6005KHBPB  as A,zxdmk as b WHERE A.byzxdm==B.DM
这个表名是数字打头的,结果是所有的BYZXDM全是一样的,我晕死!

但是6005KHBPB.dbf将名字改为KHBPB6005.DBF,命令改为
UPDATE KHBPB6005 SET khbpb6005.BYZXMC=zxdmk.MC FROM KHBPB6005,zxdmk WHERE khbpb6005.byzxdm==zxdmk.DM
则结果正确。

如果不改表名,如何得到正确的结果?

请赐教![em10]

本人使用的是VFP 9.0+SP2

回复列表 (共4个回复)

沙发

UPDATE "6005KHBPB" SET BYZXMC=B.MC FROM "6005KHBPB"  as A,zxdmk as b WHERE A.byzxdm==B.DM

板凳

USE "6005KHBPB" ALIAS a0
UPDATE a0 SET BYZXMC=B.MC FROM a0 as A,zxdmk as b WHERE A.byzxdm==B.DM

3 楼

to cbl518:
   谢谢你的回复,不过你的命令和我的一样:所有的BYZXDM全是一样的。具体说是6005KHBPB.dbf的第一条记录的byzxdm字段值对应的zxdmk中的mc!

4 楼

自己找到答案了,如下:
UPDATE 6005KHBPB SET BYZXMC=B.MC FROM zxdmk as b WHERE byzxdm==B.DM

这样也可以:
UPDATE 6005KHBPB SET BYZXMC=(select mc from zxdmk WHERE dm=byzxdm)

我来回复

您尚未登录,请登录后再回复。点此登录或注册