我想以下列方式插入这些值:
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)
答案 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