[英]How to Insert mutliple rows from one table into another table?
How do I create an insert statement that will insert E_PROVIDER_ID values (PROV_ID, PROV_NAME, IDENTITY_ID) into E_PROVIDER_MAP where IDENTITY_ID_TYPE = 125? 如何创建将E_PROVIDER_ID值(PROV_ID,PROV_NAME,IDENTITY_ID)插入E_PROVIDER_MAP(其中IDENTITY_ID_TYPE = 125)的插入语句?
I need the insertion to insert values from the ID table into the mapping table so that: 我需要插入以将ID表中的值插入到映射表中,以便:
E_PROVIDER_ID.PROV_ID = E_PROVIDER_MAP.I_PROV E_PROVIDER_ID.E_PROVIDER_ID = E_PROVIDER_ID.IDENTITY_ID E_PROVIDER_ID.E_PROV_NAME = E_PROVIDER_MAP.I_PROV_NAME E_PROVIDER_ID.E_PROV_NAME = E_PROVIDER_MAP.E_PROV_NAME
--Create ID Table -创建ID表
create table E_PROVIDER_ID
(
PROV_ID VARCHAR2(50),
PROV_NAME VARCHAR2(50),
ID_LINE# VARCHAR2(50),
IDENTITY_TYPE_ID VARCHAR2(50),
ID_TYPE_NAME VARCHAR2(50),
IDENTITY_ID VARCHAR2(50),
)
--INSERT VALUES -插入值
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1005232', 'SMITH, BRIAN EDWARD', '5', '125', 'PROVIDER CODE ID', '020621');
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1003556', 'SMITH, JOHN STUART', '4', '125', 'PROVIDER CODE ID', '026786');
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1003595', 'SMITH, RICHARD F.', '5', '125', 'PROVIDER CODE ID', '029091');
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1003602', 'SMITH, PAUL MATTHEW', '5', '125', 'PROVIDER CODE ID', '029761');
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1003769', 'SMITH, MARC DROR', '4', '125', 'PROVIDER CODE ID', '029748');
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1006776', 'SMITH, ULA V.', '6', '125', 'PROVIDER CODE ID', '034415');
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1006946', 'SMITH, TIMOTHY P.', '7', '125', 'PROVIDER CODE ID', '034687');
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1007032', 'SMITH, DAVID C.', '7', '125', 'PROVIDER CODE ID', '101754');
commit;
-- Create map table -创建地图表
create table E_PROVIDER_MAP
(
I_PROV NUMBER,
I_PROV_NAME VARCHAR2(50),
E_PROV NUMBER,
E_PROV_NAME VARCHAR2(50),
I_REC_INST VARCHAR2(8)
)
I think you just want insert . . . select
我认为您只想insert . . . select
insert . . . select
insert . . . select
syntax: insert . . . select
语法:
insert into E_PROVIDER_MAP(<columns go here>)
select PROV_ID, PROV_NAME, IDENTITY_ID
from E_PROVIDER_ID
where IDENTITY_ID_TYPE = 125;
I cannot readily tell what the list of columns should be for the "map" table. 我不能轻易说出“地图”表的列列表应该是什么。
EDIT: 编辑:
Based on your comment and the edit to your question: 根据您的评论和对问题的修改:
insert into E_PROVIDER_MAP(I_PROV, IDENTITY_ID, I_PROV_NAME, E_PROV_NAME)
select PROV_ID, E_PROVIDER_ID, E_PROV_NAME, E_PROV_NAME
from E_PROVIDER_ID
where IDENTITY_ID_TYPE = 125;
I do note that these columns seem to have nothing to do with the create table
statements in the question. 我确实注意到这些列似乎与问题中的create table
语句无关。
Because you are selecting from a table with VARCHAR columns you need to do a select insert with a cast. 因为要从具有VARCHAR列的表中进行选择,所以需要使用强制转换进行选择插入。
insert into E_PROVIDER_MAP(I_PROV, IDENTITY_ID, I_PROV_NAME, E_PROV_NAME) select CAST(PROV_ID AS NUMBER), CAST(E_PROV AS NUMBER), I_PROV_NAME, E_PROV_NAME from E_PROVIDER_ID where IDENTITY_ID_TYPE = 125; 插入E_PROVIDER_MAP(I_PROV,IDENTITY_ID,I_PROV_NAME,E_PROV_NAME)中,从E_PROVIDER_ID中选择CAST(PROV_ID AS NUMBER),CAST(E_PROV AS NUMBER),I_PROV_NAME,E_PROV_NAME,其中IDENTITY_ID_TYPE = 125;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.