oracle中,如何在一张表插入数据,使得插入数据的某些字段为其他表中的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中,如何在一张表插入数据,使得插入数据的某些字段为其他表中的数据相关的知识,希望对你有一定的参考价值。

参考技术A 最直接的:
insert into tableA (col_1,col_2,.....)
select col3,col4....
from tableB
where ......;

如果是插入一行记录,在values里面使用单行子查询
insert into tableA (col_1,col_2,.....)
values (v1,(select col1 from tableB where .....),.....);

如果tableA里面已经有一些数据,希望可以根据tableA中的现有数据从tableB中将相关数据更新进来。
可以与tableB进行关联,使用关联子查询,可以一次更新多行
update tableA set (col_1,col_2......)=(select col_3,col_4...... from tableB where tableB.col_b=tableA.col_a)追问

谢谢,我已经写出来了,不过你这个我还是有点不太懂,可以加好友吗?方便以后交流?

本回答被提问者采纳

oracle中从一张表中筛选出不再多个时间段内的时间

一张表存储 假期 开始时间strat_time 结束时间 end_time,这张表中存储有多条记录
另一张表存储正常的时间work_time

如何从存储正常时间的的表中筛选出不再另一张表包含的时间段内的时间

建表和插入数据 
create table table_a( t1 date, t2 date);

insert into table_a values(to_date('20140501','yyyymmdd') ,to_date('20140503','yyyymmdd'));

insert into table_a values(to_date('20140508','yyyymmdd') ,to_date('20140509','yyyymmdd'));

create table table_b(t date,id int)
insert into table_b values(to_date('20140501','yyyymmdd'),1);
insert into table_b values(to_date('20140502','yyyymmdd'),2);
insert into table_b values(to_date('20140503','yyyymmdd'),3);
insert into table_b values(to_date('20140504','yyyymmdd'),4);
insert into table_b values(to_date('20140505','yyyymmdd'),5);
insert into table_b values(to_date('20140506','yyyymmdd'),6);
insert into table_b values(to_date('20140507','yyyymmdd'),7);
insert into table_b values(to_date('20140508','yyyymmdd'),8);
insert into table_b values(to_date('20140509','yyyymmdd'),9);
insert into table_b values(to_date('20140510','yyyymmdd'),10);
insert into table_b values(to_date('20140511','yyyymmdd'),11);


查询语句 

select * from table_b where t not in(
select distinct b.t from table_b b,table_a a where b.t  between a.t1 and a.t2)

参考技术A oracle中从一张表中筛选出不再多个时间段内的时间
建表和插入数据
create table table_a( t1 date, t2 date);

insert into table_a values(to_date('20140501','yyyymmdd') ,to_date('20140503','yyyymmdd'));

insert into table_a values(to_date('20140508','yyyymmdd') ,to_date('20140509','yyyymmdd'));

create table table_b(t date,id int)
insert into table_b values(to_date('20140501','yyyymmdd'),1);
insert into table_b values(to_date('20140502','yyyymmdd'),2);
insert into table_b values(to_date('20140503','yyyymmdd'),3);
insert into table_b values(to_date('20140504','yyyymmdd'),4);
insert into table_b values(to_date('20140505','yyyymmdd'),5);
insert into table_b values(to_date('20140506','yyyymmdd'),6);
insert into table_b values(to_date('20140507','yyyymmdd'),7);
insert into table_b values(to_date('20140508','yyyymmdd'),8);
insert into table_b values(to_date('20140509','yyyymmdd'),9);
insert into table_b values(to_date('20140510','yyyymmdd'),10);
insert into table_b values(to_date('20140511','yyyymmdd'),11);

查询语句

select * from table_b where t not in(
select distinct b.t from table_b b,table_a a where b.t between a.t1 and a.t2)

以上是关于oracle中,如何在一张表插入数据,使得插入数据的某些字段为其他表中的数据的主要内容,如果未能解决你的问题,请参考以下文章

SQL求助,我要想在一张表新增多行,只有第一列值不同,后面的列值相同,该怎么插入?

两张表 在一张表中插入数据时要使用触发器也更新另一张 有错误

用oracle存储过程将一张表的数据查出插入另一张表

在oracle中怎么把一张表的数据插入到另一张表中

用oracle存储过程将一张表的数据查出插入另一张表

oracle 将一张表的数据插入到另一张表