免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Erics
打印 上一主题 下一主题

请各位指教:如何用sql语句更新两个表之间的数据,紧急求助~~ [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-10-17 17:05 |只看该作者

请各位指教:如何用sql语句更新两个表之间的数据,紧急求助~~

to edwin:
不是的,old_tel跟number的tel_no一一相同,同时old_tel对应new_tel 也没有重复值,  用select distinct返回的多行值是new_tel的多个值,但不是重复值,数据格式大至如下,我想要根据old_tel,把tel_no 更新成对应的new_tel
number      gh
tel_no         old_tel    new_tel
2222           2222       22
3333           3333       33
4444           4444       66

to jf:
不知道merge into 语句具体怎么写,这个命令我没用过

论坛徽章:
0
12 [报告]
发表于 2003-10-17 17:19 |只看该作者

请各位指教:如何用sql语句更新两个表之间的数据,紧急求助~~

原帖由 "Erics" 发表:
在sqlplus 里有两个表,number表字段有tel_no, gh表字段有old_tel,new_tel, 两个表的tel_no和old_tel一一对应,现在我需要把number表里的tel_no更新成 gh里的new_tel
应该如何写语句
update number set tel_no=gh...........

论坛徽章:
0
13 [报告]
发表于 2003-10-17 17:21 |只看该作者

请各位指教:如何用sql语句更新两个表之间的数据,紧急求助~~

原帖由 "Erics" 发表:
在sqlplus 里有两个表,number表字段有tel_no, gh表字段有old_tel,new_tel, 两个表的tel_no和old_tel一一对应,现在我需要把number表里的tel_no更新成 gh里的new_tel
应该如何写语句
update number set tel_no=gh...........



merge into number
using gh
on number.tel_no=gh.old_tel
when matched then
update set
number.tel_no=gh.new_tel
when not matched then
insert (tel_no)
values(gh.new_tel);

应该能解决你的问题。(但必须是oracle9i)

论坛徽章:
0
14 [报告]
发表于 2003-10-17 17:40 |只看该作者

请各位指教:如何用sql语句更新两个表之间的数据,紧急求助~~

我这边是oracle8,,执行后提示“无效的语句”
有没有其他的办法了?

论坛徽章:
0
15 [报告]
发表于 2003-10-17 17:42 |只看该作者

请各位指教:如何用sql语句更新两个表之间的数据,紧急求助~~

我刚测试了我的语句,肯定可以的,你看看有没有写错啊

论坛徽章:
0
16 [报告]
发表于 2003-10-17 17:51 |只看该作者

请各位指教:如何用sql语句更新两个表之间的数据,紧急求助~~

update number set (tel_no,old_tel)=(select distinct gh.new_tel,gh.old_tel  from gh where number.tel_no=gh.old_new)

multy column罢了

论坛徽章:
0
17 [报告]
发表于 2003-10-17 17:58 |只看该作者

请各位指教:如何用sql语句更新两个表之间的数据,紧急求助~~

那只好编个block,用游标循环更新。

论坛徽章:
0
18 [报告]
发表于 2003-10-17 18:04 |只看该作者

请各位指教:如何用sql语句更新两个表之间的数据,紧急求助~~

update number set tel_no=(select distinct gh.new_tel from gh where number.tel_no=gh.old_new)
执行这条语句后提示“无法更新tel_no为null"
这条语句 select 返回的是空值

update number set tel_no=(select distinct gh.new_tel from gh ,number where number.tel_no=gh.old_new)

但我在select ...语句的from 里加入number后再执行又提示“子查询返回多行值”
很着急呀,还有没有办法呀
to  jf:
用游标更新不知道语句应该怎么写请指点

论坛徽章:
0
19 [报告]
发表于 2003-10-17 20:22 |只看该作者

请各位指教:如何用sql语句更新两个表之间的数据,紧急求助~~

我试试看

论坛徽章:
0
20 [报告]
发表于 2003-10-19 16:56 |只看该作者

请各位指教:如何用sql语句更新两个表之间的数据,紧急求助~~



update number  a
set tel_no=(select new_tel from gh where old_new=a.tel_no);


if old_new is not unique, ues this sql

update number  a
set tel_no=(select new_tel from gh where old_new=a.tel_no
and rownum=1);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP