首页 > 解决方案 > 在 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

标签: oracle

解决方案


您将编写一个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>

推荐阅读