itsource

Oracle SQL - 하나의 문이 있는 테이블에 여러 행을 삽입하시겠습니까?

mycopycode 2023. 6. 21. 22:34
반응형

Oracle SQL - 하나의 문이 있는 테이블에 여러 행을 삽입하시겠습니까?

값 중 하나가 다르다는 것을 제외하고는 모두 동일한 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 INTO attribute_list (id, value, name)
SELECT id, 'Y', 'is_leveled'
FROM value_list WHERE val >= 50

그것이 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;

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

할 수 있습니다.SELECT ... INTO데이터를 조회할 수 있는 경우.그렇지 않으면 PL/SQL을 사용하여 데이터를 생성해야 합니다.

데이터가 있으면 다음을 시도합니다.

select id,'Y','is_leveled'
INTO attribute_list 
from value_list where val >= 50

언급URL : https://stackoverflow.com/questions/10197407/oracle-sql-insert-multiple-rows-into-a-table-with-one-statement

반응형