简体   繁体   English

如何将多个表中的多个行插入到另一个表中?

[英]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.

相关问题 如何在postgres中将唯一行从一个表插入到另一个表? - How to insert unique rows from one table to another table in postgres? 如何将具有结构的行从一个表插入到另一个表? - How to insert rows with structure from one table to another table? 如何在sql中将行从一个临时表插入到另一个 - How to insert rows from one temp table to another in sql 如何根据日期将新行从一个表插入到另一个表? - How to in insert new rows from one table to another based on date? 如何在SQL Server 2012中将数据从另一个表的多个表行插入一个表行? - How to insert data into one table row from multiple table rows in another table in SQL Server 2012? 将表中的许多行插入另一表中的唯一行 - Insert many rows from a table into one unique row in another table 将一个表中的行插入到具有特定模式的另一个表的列中 - Insert rows from one table to columns of another table with specific pattern SQL将一个表中的多行插入另一个表的列中 - SQL insert multiple rows from one table into columns on another table 如何将一张表的一行插入另一张表的两行 - How to insert one row of a table into two rows of another table 如何为另一个表的每个ID向一个表中插入多行 - How to insert multiple rows into one table for each id of another table
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM