我想插入N行全部相同,但其中一个值不同。具体来说,这就是我想要的:
insert into attribute_list (id,value,name)
values
(
select (id,'Y','is_leveled') from value_list where val >= 50
);
因此对于每个具有val> = 50的值,我会在attribute_list中插入一行。这可以通过一个insert语句完成,还是应该只在excel中手动生成这些插入?
(注意:这是一个简化的例子,以澄清问题,所以不需要攻击这个特定情况的不必要)
答案 0 :(得分:26)
你绝对可以在一个声明中做到这一点!
试试这个:
INSERT INTO attribute_list (id, value, name)
SELECT id, 'Y', 'is_leveled'
FROM value_list WHERE val >= 50
答案 1 :(得分:5)
这就是FOR loops的用途。
DECLARE
x NUMBER := 100;
BEGIN
FOR i IN 1..10 LOOP
IF MOD(i,2) = 0 THEN -- i is even
INSERT INTO temp VALUES (i, x, 'i is even');
ELSE
INSERT INTO temp VALUES (i, x, 'i is odd');
END IF;
x := x + 100;
END LOOP;
COMMIT;
END;
答案 2 :(得分:2)
您需要SELECT中的INSERT。为此,您应该省略VALUES
,然后执行:
insert into attribute_list (id,value,name)
select (id,'Y','is_leveled') from value_list where val >= 50;
答案 3 :(得分:1)
如果您可以查询数据,则可以执行SELECT ... INTO
。否则,要创建数据,您需要使用PL / SQL
如果您有数据,请尝试:
select id,'Y','is_leveled'
INTO attribute_list
from value_list where val >= 50