ORACLE中将一个表字段赋值到另一个表中

aline1985 2010-02-05 10:01:52
同一个库中2张表 simple,simple2
都对应有相同的主键ID,且值相同
两个表都有字段name但值不同
现在需要将simple2中字段name对应到simple中
要求相同的ID对应到相对应的name

表里面有1000多条数据,不能一条条的update哦
...全文
1701 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanfang5138553 2011-04-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yuzhenhuan01 的回复:]
update simple1 a set a.name =(select b.name from simple2 b where a.id=b.id)
[/Quote]

感觉在sql server2000中语法错误.
ngx20080110 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 aline1985 的回复:]
引用 6 楼 ngx20080110 的回复:
引用 5 楼 aline1985 的回复:
1、2楼写的条件语句(如select b.name from simple2 b where a.id=b.id)
均报’a‘.’id‘标识符无效或者 'simple'.'id'标识符无效


SQL codecreatetable simple1 (idnumber, namevarchar2(20));createtable simple2 (idnumber, namevarchar2(20));insertinto simple1values (1,'Tom');insertinto simple1values (2,'Jack');insertinto simple1values (3,'Andy');insertinto simple2values (1,'Amy');insertinto simple2values (2,'Mary');insertinto simple2values (3,'Cindy');update simple1set name= (select namefrom simple2where simple2.id= simple1.id);


这两个表都已经有字段ID,NAME等其他多个字段,其中ID是主键,且都有值
单独查询 select s.id from simple s 或者select s.name from simple s都能返回值,但是你们的语句就是会报上面的错
[/Quote]
可以把你那两个表的结果贴出来么?我想看看为什么报错
aline1985 2010-02-05
  • 打赏
  • 举报
回复
试了下3楼的方法,问题解决,结贴咯
aline1985 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ngx20080110 的回复:]
引用 5 楼 aline1985 的回复:
1、2楼写的条件语句(如select b.name from simple2 b where a.id=b.id)
均报’a‘.’id‘标识符无效或者 'simple'.'id'标识符无效


SQL codecreatetable simple1 (idnumber, namevarchar2(20));createtable simple2 (idnumber, namevarchar2(20));insertinto simple1values (1,'Tom');insertinto simple1values (2,'Jack');insertinto simple1values (3,'Andy');insertinto simple2values (1,'Amy');insertinto simple2values (2,'Mary');insertinto simple2values (3,'Cindy');update simple1set name= (select namefrom simple2where simple2.id= simple1.id);
[/Quote]

这两个表都已经有字段ID,NAME等其他多个字段,其中ID是主键,且都有值
单独查询 select s.id from simple s 或者select s.name from simple s都能返回值,但是你们的语句就是会报上面的错
vanjayhsu 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ngx20080110 的回复:]
引用 5 楼 aline1985 的回复:
1、2楼写的条件语句(如select b.name from simple2 b where a.id=b.id)
均报’a‘.’id‘标识符无效或者 'simple'.'id'标识符无效


SQL codecreatetable simple1 (idnumber, namevarchar2(20));createtable simple2 (idnumber, namevarchar2(20));insertinto simple1values (1,'Tom');insertinto simple1values (2,'Jack');insertinto simple1values (3,'Andy');insertinto simple2values (1,'Amy');insertinto simple2values (2,'Mary');insertinto simple2values (3,'Cindy');update simple1set name= (select namefrom simple2where simple2.id= simple1.id);
[/Quote]

不错。。。
ngx20080110 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 aline1985 的回复:]
1、2楼写的条件语句(如select b.name from simple2 b where a.id=b.id)
均报’a‘.’id‘标识符无效或者 'simple'.'id'标识符无效

[/Quote]

create table simple1 (id number, name varchar2(20));
create table simple2 (id number, name varchar2(20));

insert into simple1 values (1, 'Tom');
insert into simple1 values (2, 'Jack');
insert into simple1 values (3, 'Andy');

insert into simple2 values (1, 'Amy');
insert into simple2 values (2, 'Mary');
insert into simple2 values (3, 'Cindy');

update simple1 set name = (select name from simple2 where simple2.id = simple1.id);
aline1985 2010-02-05
  • 打赏
  • 举报
回复
1、2楼写的条件语句(如select b.name from simple2 b where a.id=b.id)
均报’a‘.’id‘标识符无效或者 'simple'.'id'标识符无效
Phoenix_99 2010-02-05
  • 打赏
  • 举报
回复
update simple1 set name = (select name from simple2 where simple2.id = simple1.id);
suiziguo 2010-02-05
  • 打赏
  • 举报
回复
都对应有相同的主键ID,且值相同。这样就好办了,尝试以下方法,效率应该不错,曾经屡试不爽,

update (select s.name name1,s2.name name2 from simple s,simple2 s2 where s.id=s2.id) v set v.name1=v.name2;

yuzhenhuan01 2010-02-05
  • 打赏
  • 举报
回复
update simple1 a set a.name =(select b.name from simple2 b where a.id=b.id)
ngx20080110 2010-02-05
  • 打赏
  • 举报
回复
update simple1 set name = (select name from simple2 where simple2.id = simple1.id);

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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