18

値の1つが異なることを除いて、すべて同一のN行を挿入したいと思います。具体的には、これが私が試していることです。

insert into attribute_list (id,value,name)
values 
(
select (id,'Y','is_leveled') from value_list where val >= 50
);

したがって、val> = 50の値ごとに、attribute_listに1つの行を挿入します。これは1つの挿入ステートメントで実行できますか、それともこれらの挿入をExcelで手動で生成する必要がありますか?

(注:これは問題を明確にするために簡略化された調理済みの例であるため、この特定のケースの不必要性を攻撃する必要はありません)

4

4 に答える 4

33

あなたは絶対にこれを1つのステートメントで行うことができます!

これを試して:

INSERT INTO attribute_list (id, value, name)
SELECT id, 'Y', 'is_leveled'
FROM value_list WHERE val >= 50
于 2012-04-17T19:04:23.807 に答える
5

これがFORループの目的です。

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;
于 2012-04-17T19:05:03.657 に答える
2

SELECTからのINSERTが必要です。そのためには、を省略して次のようにする必要がVALUESあります。

insert into attribute_list (id,value,name)
select (id,'Y','is_leveled') from value_list where val >= 50;

次に例を示します:http://psoug.org/reference/insert.html

于 2012-04-17T19:05:58.040 に答える
1

SELECT ... INTOデータをクエリできる場合は、を実行できます。それ以外の場合、データを作成するには、PL/SQLを使用する必要があります

データがある場合は、次を試してください。

select id,'Y','is_leveled'
INTO attribute_list 
from value_list where val >= 50
于 2012-04-17T19:04:21.703 に答える