询问一简单UPDATE语句

mahongxi 2004-10-15 11:17:51
表1
T_JHK.DBF
ZYDH ZYMC
------- ---------
1 abc
2 def
3 xyx
表2
T_TDD.DBF
PKID LQZY ZYMC
---- ------- --------
1 2
2 3
3 1


想表2中的LQZY与表1中的ZYDH做为关联,更新表2中的ZYMC为表1中的ZYMC值

期待结果

表2
T_TDD.DBF
PKID LQZY ZYMC
---- ------- --------
1 2 def
2 3 xyz
3 1 abc

谢谢各位
我的以下偿试均以失败告终:
update t_tdd.dbf t1,t_jhk.dbf t2 set t1.zymc=t2.zymc where t1.lqzy =t2.zydh
update t_tdd.dbf set zymc = (select zymc from t_jhk.dbf where zydh=lqzy)
...全文
185 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2004-10-19
  • 打赏
  • 举报
回复
不客气
mahongxi 2004-10-18
  • 打赏
  • 举报
回复
采用了apple_8180(十豆三) 的方案,谢谢啦。
十豆三 2004-10-16
  • 打赏
  • 举报
回复
方法一:我已在VFP6和VFP8中测试通过。
close data
use T_JHK
scan
UPDATE T_TDD SET T_TDD.ZYMC=T_JHK.ZYMC WHERE T_TDD.LQZY=T_JHK.ZYDH
endscan
close data

方法二:( yestoyes兄的方法,我也在VFP6和VFP8中测试通过。)
close data
CLEAR ALL
USE t_jhk EXCLUSIVE
INDEX ON zydh TAG tjhk
USE t_tdd IN 0
SELECT t_tdd
SET RELATION TO lqzy INTO t_jhk
REPLACE ALL zymc WITH t_jhk.zymc
close data

注:把以上代码建立一个PRG程序来执行。
替换完成后,
use t_tdd
brow &&看一下,就是你的结果。
yestoyes 2004-10-16
  • 打赏
  • 举报
回复
很多时候我们只是为了达到目的,我的代码是经过测试完全能符合楼主要求的
十豆三 2004-10-15
  • 打赏
  • 举报
回复
对不起,问题没看清,应该是:
use T_JHK
scan
UPDATE T_TDD SET T_TDD.ZYMC=T_JHK.ZYMC WHERE T_TDD.LQZY=T_JHK.ZYDH
endscan
yestoyes 2004-10-15
  • 打赏
  • 举报
回复
CLEAR ALL
USE t_jhk EXCLUSIVE
INDEX ON zydh TAG tjhk
USE t_tdd IN 0
SELECT t_tdd
SET RELATION TO lqzy INTO t_jhk
REPLACE ALL zymc WITH t_jhk.zymc
十豆三 2004-10-15
  • 打赏
  • 举报
回复
在VFP中是这样使用的:
use T_JHK
scan
UPDATE T_TDD SET T_TDD.ZYMC=T_JHK.ZYMC WHERE T_TDD.PKID=T_JHK.ZYDH
endscan
十豆三 2004-10-15
  • 打赏
  • 举报
回复
在VFP中是这样使用的:
CLOSE DATABASES
SELECT 1
USE T_TDD
SELECT 2
use T_JHK
scan
UPDATE T_TDD SET T_TDD.ZYMC=T_JHK.ZYMC WHERE T_TDD.PKID=T_JHK.ZYDH
endscan
SELECT 1
BROWSE
十豆三 2004-10-15
  • 打赏
  • 举报
回复
use T_JHK
scan
update T_TDD set T_TDD.ZYMC=T_JHK.ZYMC where T_TDD.PKID=T_JHK.PKID
endscan
liuri璇玑 2004-10-15
  • 打赏
  • 举报
回复
好象VFP不支持这样的语法
两种处理方法
1、一条一条的循环
2、两个表建立关联再更新

语法不太记得了,好象是:
set relation 表1.ZYDH to 表2.LQZY ..
replace t1.zymc=t2.zymc ...
十豆三 2004-10-15
  • 打赏
  • 举报
回复
请参考:
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=200979
JohnShen 2004-10-15
  • 打赏
  • 举报
回复
请参见FAQ:俩个表如何关联update数据问题.

http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=200979
YuyuanJian 2004-10-15
  • 打赏
  • 举报
回复
up
淡蓝冰 2004-10-15
  • 打赏
  • 举报
回复
update t_tdd set zymc=(select zymc from t_jhk where zydh=t_tdd.lqzy)
select * from t_tdd
一定行﹐我剛剛試了
LAIYANGPJ 2004-10-15
  • 打赏
  • 举报
回复
这UPDATE-SQL不能与SELECT-SQL一样进行批量的不同数值的替换,还是加点别的语句吧!

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧