一条SQL查询语言的问题,求助

xylegend 2005-02-05 08:33:31
我现在有两个表:user表和phone表
user表有字段:
姓名 卡号 地址

phone表有字段:
姓名 电话

现在考虑在user表中加入'电话'字段
并且将user表和phong表关联操作(以两个表中的'姓名'字段的记录相同为条件)将phone表'电话'字段的数据插入到user表中(注意user表中的其它数据不能改变)

以上操作用纯sql语言实现,实现过程允许另外建临时表
谢谢!
...全文
183 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
GX198302 2005-02-06
  • 打赏
  • 举报
回复
o god
xuzuning 2005-02-06
  • 打赏
  • 举报
回复
vfp?
这样写:
select * from user into table temp
select temp.姓名, temp.卡号, temp.地址, phone.电话 from temp left join phone on temp.姓名=phone.姓名 into table user

注意:
select * from user into table temp
不能写做
select * from user into cursor temp
因为下一句要用到左连接,不能使用临时表
而第二句不使用左连接的话,将丢失user表中没有电话记录

你也可以写做
select user.姓名, user.卡号, user.地址, phone.电话 from user left join phone on user.姓名=phone.姓名 into cursor temp
select * from temp into table user
这样可能好一些
  • 打赏
  • 举报
回复
vfp是支持表的关联的,这个没有问题,我用过的

你可以给清风或者因果网发短消息的(vfp版主)

另外楼主跟我的名字是一样的,你姓什么??
fronm 2005-02-06
  • 打赏
  • 举报
回复

╔╗╔╦═╦═╦═╦╗╔╗ ╔═╦═╦╦╦╗ ╔╗╔╦═╦═╦══╗
║╚╝║║║║║║║╚╝║ ║║║═╣║║║ ║╚╝║═╣║║ ═ ║
║╔╗║ ║╔╣╔╩╗╔╝ ║║║═╣║║║ ╚╗╔╣═╣ ║╔╗╚╗
╚╝╚╩╩╩╝╚╝ ╚╝  ╚╩╩═╩══╝  ╚╝╚═╩╩╩╝╚═╝
ice_berg16 2005-02-06
  • 打赏
  • 举报
回复
VFP不熟,如果北极狐的也不行还是到数据库版问问吧.
magicsnake 2005-02-06
  • 打赏
  • 举报
回复
alter table user add
(
telephone varchar(20)
);

update user a set telephone = (select telephone from phone b where b.name = a.name)
xylegend 2005-02-06
  • 打赏
  • 举报
回复
ice_berg16(寻梦的稻草人) 大哥
又见到你了,热心帮过我的。感谢!
楼上几位:无论你的SQL多标准,到了VFP就是错误
你们写的sql我早就用过的了。。。
我还真怀疑×软出的垃圾太多了
vfp里好像只要涉及到两表关联就有问题的,尽管是很简单的问题!!真怀疑能否支持表的关联操作
tony-杨 2005-02-06
  • 打赏
  • 举报
回复
强悍的说

我来顶
xylegend 2005-02-06
  • 打赏
  • 举报
回复
奇怪结帖怎么会提示整理成faq,好久不来,改了?
xylegend 2005-02-06
  • 打赏
  • 举报
回复
今天处理某公司的部分话费记录超过一百万条,在文本界面却只是10多分钟
xylegend 2005-02-06
  • 打赏
  • 举报
回复
谢谢唠叨老大!虽然不能完全符合要求(用左联要增加好几个字段),但是对我工作的帮助是很大的!
再次感谢各位!
最后我是写了一个小程序来解决的:让两表逐条记录来比较,找到姓名字段相同的记录时就在replace一个电话字段添加一记录,并且在user表中删除掉含姓名相同的记录(vfp只是作个删除标记,并不实际删除)。然后将作了删除标记的记录copy to到一个文件,达到我的目的。
但vfp在图形界面的运行效率实在是不敢恭维,两个表各只是10000多条记录,p4 2.8居然还要40多钟。。。
aruhan 2005-02-06
  • 打赏
  • 举报
回复
ALTER TANLE user ADD 电话 varchar(30) not null;
UPDATE user,phone SET user.电话=phone.电话 where user.姓名=phone.姓名;
ice_berg16 2005-02-05
  • 打赏
  • 举报
回复
-----MYSQL4.0以上-----

ALTER TABLE `user` ADD 电话 varchar(30) not null;
UPDATE `user`, phone
SET `user`.电话=phone.电话
WHERE `user`.姓名=phone.姓名;

----MYSQL3.23----

CREATE TEMPORARY TABLE new_user
SELECT u.*,p.电话
FROM `user` AS u
LEFT JOIN phone AS p ON u.姓名=p.姓名;
DROP TABLE `user`;
CREATE TABLE `user`
SELECT * FROM new_user;
hackfan 2005-02-05
  • 打赏
  • 举报
回复
一条恐怕不可以,因为一个是alter table一个是update
sfply 2005-02-05
  • 打赏
  • 举报
回复
一条不大可能,用多条也没有什么问题呀,为什么非要用一条?
本来问题很简单的嘛
xylegend 2005-02-05
  • 打赏
  • 举报
回复
楼上的,当然行。前提是sql语言实现,当然适用于vfp的语句更好
-神仙- 2005-02-05
  • 打赏
  • 举报
回复
用一条行吗???

写一个脚本不行吗

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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