oracle - 在 oracle 中查询以从一个表中获取多条记录并输入到另一个表中
问题描述
我的要求是在 oracle 中编写一个查询
“从用户表中获取用户 ID 并插入到 USERQueries 表中”
用户
USERID GPID GROUP
1682 1026 IBMSDL2S
1882 1028 IBMSDL2S
1573 1029 IBMSDL2S
1342 1124 IBMSDL2S
1976 2576 IBMSDL2S
1883 2575 IBMSDL2S
1854 2574 IBMSDL2S
2222 2573 IBMSDL2S
2207 2572 IBMSDL2S
USER查询
APP CLAUSENAME USERID DEFAULTQUERYID OWNER
SR Assgined_SRs_To_Me 1249 545 MAXADMIN
SR Assgined_SRs_To_Me 1682 543 MAXADMIN
我可以插入一个用户 ID,如下所示
insert into USERSQUERIES
(APP,CLAUSENAME,USERID,DEFAULTQUERYID,OWNER)
values
('SR','Assgined_SRs_To_Me',(select userid from USERS where groupname='IBMSDL2S' and userid='1249
),DEFAULTQUERYSEQ.NEXTVAL,'MAXADMIN')
但不明白它如何适用于所有用户 ID
解决方案
您将编写一个SELECT
获取您感兴趣的数据的语句,然后在INSERT
语句中使用它。看看下面的例子:
先测试用例:
SQL> create table users as
2 select 1682 userid, 1026 gpid, 'IBMSDL25' groupname from dual union all
3 select 1882 userid, 1028 gpid, 'IBMSDL25' groupname from dual union all
4 select 2222 userid, 2222 gpid, 'XXXXXX25' groupname from dual; --> will NOT be inserted
Table created.
SQL> create table usersqueries (app varchar2(2),
2 clausename varchar2(20), userid number, defaultqueryid number, owner
3 varchar2(20));
Table created.
SQL> create sequence defaultqueryseq;
Sequence created.
SQL>
测试:从第 3 行开始是SELECT
我之前提到的语句。
SQL> insert into usersqueries
2 (app, clausename, userid, defaultqueryid, owner)
3 select 'SR',
4 'Assigned_SRs_to_me',
5 u.userid,
6 defaultqueryseq.nextval,
7 'MAXADMIN'
8 from users u
9 where u.groupname = 'IBMSDL25';
2 rows created.
SQL> select * From usersqueries;
AP CLAUSENAME USERID DEFAULTQUERYID OWNER
-- -------------------- ---------- -------------- --------------------
SR Assigned_SRs_to_me 1682 1 MAXADMIN
SR Assigned_SRs_to_me 1882 2 MAXADMIN
SQL>