여러 select 문을 하나의 table 의 column 마다 insert 하고 싶습니다. 0 5 3,106

by 쏘쓰 [Oracle 기초] oracle 일괄등록 [2019.07.03 15:25:52]


안녕하세요.

웹개발 입사 4개월차 초짜입니다. ㅠㅠㅠ

이미 엄청난 데이터가 쌓여있는 테이블에서 각기 다른 조건으로 한테이블에

새로만든 sequence 와 같이 전부 옮기고 싶습니다.

 

insert into item_name
values (
    item_name_id_seq.nextval,   
    (select item_id from item),
    (select item_id from item where option_yn = 0),
    (select item_name from item where option_yn = 1)
);

 

위와 같이 하고싶은데 구글링으로 답을 못찾겠습니다.

어떤 방법이 있을까요 ? ㅠㅠ 도와주세요 선배님들

 

by jkson [2019.07.03 16:16:01]

item 테이블에 1건만 있는 게 아닐텐데 저게 오류 안 나나요? 원하시는 내용을 표로 설명해주시면 이해가 빠를 것 같습니다.


by 쏘쓰 [2019.07.03 16:30:40]

네 '제가 하고싶은게 이런의미이다' 를 전해 드리기 위해 작성한 insert 문입니다.

단일행 질의에 2개 이상의 행이 리턴되었습니다. 라는 오류가 발생하구요.

웹 검색으로 https://stackoverflow.com/questions/31968093/inserting-multiple-rows-with-sequence-in-oracle
위 게시글의 내용을 적용해 함수를 만들었지만 여전히 해결을 못하고 있습니다.


by 마농 [2019.07.03 17:29:24]

원하는 바를 전달할 때
- 잘못 작성된 쿼리로 질문하지 마시고
- 원본 대비 결과표 예시자료로 질문하세요.


by 쏘쓰 [2019.07.03 16:35:25]
create or replace FUNCTION get_seq RETURN NUMBER IS
BEGIN
  RETURN item_name_id_seq.nextval;
END;

------------------------------------------------------------------------이렇게 함수를 만들어 봤습니다 


by jkson [2019.07.03 17:31:42]

그냥 전체 데이터를 시퀀스 컬럼 하나 추가해서 새로운 테이블에 넣으시려는 거 아닌가요?

item_name_id_seq 시퀀스가 이미 만들어져 있다면

create table item_name

as

select item_name_id_seq.nextval seq, a.* from item

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입