不是用update 而是自动生成的 表1是员工表 表2是考勤表 当表1中的某个员工签到后会自动在表2里面插入一条考勤记录,但是这记录里面有员工编号没有员工的姓名这个字段,现在就是想添加这个字段,以后他们签到的时候自动生成的记录里面有相应的员工名称 就是直接select出来呗 select 表2.*,表1.员工名称 from 表1,表2 where 表1.员工编号=表2.员工编号(+)
bw555的回答就是可以的,相当于SQL SERVER中的 UPDATE FROM
对于之前已经存在的数据,可以采用 2# 的方法,如果后面有新的数据进来,可以考虑 TR 来实现 。 给你个例子,一看就明白 create table m as select 1 id , 'beijing' name from dual union all select 2 id , 'shanghai'name from dual / create table s (id int not null , name varchar(30) , re varchar(30)) / create or replace trigger s_ins_tr before insert on s for each row begin select name into :new.name from m where id = :new.id ; end ; / insert into s(id , re ) values(1,'test') / select * from s /
WHERE EXISTS(select 1 from 表1 WHERE 员工编号=表1.员工编号)
就是直接select出来呗
select 表2.*,表1.员工名称
from 表1,表2
where 表1.员工编号=表2.员工编号(+)
给你个例子,一看就明白
create table m as
select 1 id , 'beijing' name from dual union all
select 2 id , 'shanghai'name from dual
/
create table s (id int not null , name varchar(30) , re varchar(30))
/
create or replace trigger s_ins_tr
before insert on s
for each row
begin
select name into :new.name from m where id = :new.id ;
end ;
/
insert into s(id , re ) values(1,'test')
/
select * from s
/