在plsql中,我想从表B中某字段的数据,然后插入到A表中同一个人的另外一个字段中

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。

创建表、数据:

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有什么关系?

追问

使用distinct去重

追答

不是重复的名字随便给一个值就行是吗?这个相当于group by,也可以去重

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-02
数据量小这样。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)

在plsql中,我想从表B中某字段的数据,然后插入到A表中同一个人的另外一...
创建表、数据: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_dri...

plsql sql语句,表里有两列A B,A列是字符串,B列是数值, 我想将A列中值...
select A,sum(B) from 表名 group by A

plsql在同一个数据库中怎么把select的查询结果作为一列插入到一个已知...
insert into 表A(col_1)(select col_1 from 表B )注意 查询的字段数目类型要与插入的字段数目类型对应上去

plsql中的两个表机构不同,如何比较两个表中数据的差异
select 列1,列2...列n from B 结果就是A表里有B表里没有的。

关于oracle中 根据一个表的主键数据同步更新另一个关联表的字段。
应该有一个A、B两表一一对应的字段,这边假设字段名就是sys_guid UPDATE B SET B.USER_ID = (SELECT ID FROM A WHERE A.sys_guid=B.sys_guid);

...plsql中怎样才能对比出两条数据中数据相同的字段呢?
可以一个字段一个字段的写,你想看哪个字段是否重复就按照下面的写也适用多个字段;select 字段,count(*) from table group by 该字段 having count(*)>1

plsql中一张表中存有多个人的多条记录,如何获取每个人的最新信息,同时...
先用分组函数,按人分组,然后根据更新时间排序,并获取第一条记录,查出结果。如果要再插入到哪,这个你还是给个表结构,说明清楚,就比较好写点。

ORA 在 Plsql中 怎样查询含有某个字段的表有哪些?
select table_name ,column_name from user_tab_columns where column_name = '字段名';

一张VFP表中,如何将两字段中不一样的记录提取出来?
既然是两个不同的字段,应该在B表也弄B1,B2两个字段对应才对啊,你的B1意思是什么?下面这个是把A表中A1,A2不相等的都提取到了B表的B1.B2中,用了游标,PLSQL下证实运行完美.(c1,c2,d1,d2你完全不用管;只要把A1,A2,B1,B2对应成你自己的就可以了)declare type d1 is ref cursor;d2 d...

Oracle 用plsql操作 同时插入两个字段 类型同为NVARCHAR2(20) 的...
oracle在存储时,对于一个字符需要2个或3个字节的存储空间,虽然表定义中为varchar2(4000),但是其实该字段的 data_length为其2倍或3倍长。这种情况下oracle会把data_length长度超过4000的当做LONG型处理,你的表中有两个这样的字段,插入数据时相当于同时操作2个LONG字段,所以报错。建议减小字段长度或...

相似回答