Oracle)插入具有一个固定值的多行

时间:2014-10-02 15:42:27

标签: sql oracle

我想以下列方式插入这些值:

insert into table (name, action-id) values ('user', select action from actions where name='user2');

结果是:

沿着('user', 1) ('user', 2) ('user', 3)

的行插入

我注意到这不是正确的sql。 我将如何完成这项工作?

请注意)

select action from actions where name='user2' 

将返回:(1,2,3)

4 个答案:

答案 0 :(得分:3)

你可以用循环来完成:

BEGIN 

    FOR x IN (select action from actions where name='user2') LOOP

         insert into table (name, action-id) values ('user', x.action)

    END LOOP;
END;

或者您可以使用INSERT/SELECT语法:

INSERT INTO table (name, action-id)
  SELECT 'user', action
  FROM actions WHERE name='user2';

答案 1 :(得分:2)

在查询中将固定值添加为列,并使用insert-select而不是insert-values:

insert into table (name, action-id)
select 'user', action from actions where name='user2';

答案 2 :(得分:0)

Or can be done by procedure 
Create that procedure and run it
create or replace procedure set_action       


   光标c1是
   从用户中选择*;    人c1%rowtype;
   username varchar(8);
   开始
    用户名:= '用户';
    对于c1循环的人
    插入表格(name,action-id)
    值(用户名,person.action);
    结束循环;
   端;
   它可以通过执行set_action;

运行

答案 3 :(得分:0)

示例:

create table testing(col1 varchar2(10), col2 varchar2(10));
create table testing2(col1 varchar2(10), col2 varchar2(10));
create table testing3(col1 varchar2(10), col2 int);
insert into testing2 (col1, col2) values ('test2_col1', 'test2_col2');
insert into testing3(col1, col2) values ('steve', 1);
insert into testing3(col1, col2) values ('brad', 2);
insert into testing3(col1, col2) values ('chad', 3);
insert into testing3(col1, col2) values ('nick', 1);
insert into testing(col1, col2)
  (select col1 ,(select col2 from testing2) from testing3); -- inserts 4 rows

最后:
select * from testing; steve test2_col2 brad test2_col2 chad test2_col2 nick test2_col2