在plsql中,我想从表B中某字段的数据,然后插入到A表中同一个人的另外一个字段中
a表有三个字段:oid,name,zhhanghu;b表有三个字段:code,driver,name。要把b表中的code列插入到a表中对应姓名的zhanghu列下,即:...
a表有三个字段:oid,name,zhhanghu;b表有三个字段:code,driver,name。要把b表中的code列插入到a表中对应姓名的zhanghu列下,即:b表中李四的code插入到a表中李四的zhahnghu,其他行同上。其中:a.oid=b.driver,a.name=b.name。b表有两个张三,只选一个插入到a表,哪个都可以,使用update、distinct。
展开
2个回答
展开全部
创建表、数据:
create table lrp_driver
(oid varchar2(5),
name varchar2(20),
zhanghu varchar2(20));
insert into lrp_driver values ('00011','张三',null);
insert into lrp_driver values ('00012','李四',null);
insert into lrp_driver values ('00013','王五',null);
insert into lrp_driver values ('00014','赵六',null);
create table sys_operator
(code varchar2(20),
driver varchar2(5),
name varchar2(20));
insert into sys_operator values ('zhangsan','00011','张三');
insert into sys_operator values ('zhangsan01','00021','张三');
insert into sys_operator values ('lisi','00012','李四');
insert into sys_operator values ('wangwu','00013','王五');
insert into sys_operator values ('zhaoliu','00014','赵六');
commit;
执行:
update lrp_driver a set a.zhanghu=(select min(b.code) from sys_operator b where a.name=b.name);
commit;
结果:
这个意思?
更多追问追答
追问
使用distinct该如何编写
追答
跟distinct有什么关系?
展开全部
数据量小这样。UPDATE A SET (A.ZHANGHU) = (SELECT MAX(B.CODE) FROM B GROUP BY B.NAME WHERE A.NAME = B.NAME),数据量大,用merge,merge用法自行百度。
追问
运行后提示“缺失右括号”
追答
UPDATE A SET (A.ZHANGHU) = (select c from (SELECT MAX(B.CODE) c
FROM B GROUP BY B.NAME )x
WHERE A.NAME = x.NAME)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询