在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。 展开
 我来答
badkano
2019-04-02 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885371
团长

向TA提问 私信TA
展开全部

创建表、数据:

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有什么关系?
不惑出彩
2019-04-02 · 超过33用户采纳过TA的回答
知道答主
回答量:97
采纳率:84%
帮助的人:17.5万
展开全部
数据量小这样。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)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式