SQL (Oracle 11g 사용)을 많이 사용하는 레거시 코드 (C++/Qt)를 파고 있습니다. 나는이 코드 조각으로 왔어요 (단지 더 나은 가독성을 위해 여러 줄을 변수 이름을 변경 및 쓰기) :똑같은 두 가지 INSERT INTO 문
insert into FOO_TABLE (BEGIN, FIRST_VALUE, SECOND_VALUE, VALUE, BAR) select
999,
D.FIRST,
(select O.SECOND from TABLE_TWO O where O.ID=555),
333,
444
from TABLE_ONE D where D.ID=666
이를 INSERT INTO ... SELECT ...
의 형태로 지금은 여기에 보인다 "선택"은 삽입물과 함께 사용되어 단일 행 행을 검색하고 작성합니다. 그러나 구문이 어색해 보입니다. 나는 그것을 다음과 같이 바꿨다 :
insert into FOO_TABLE (BEGIN, FIRST_VALUE, SECOND_VALUE, VALUE, BAR) values (
999,
(select D.FIRST from TABLE_ONE D where D.ID=666),
(select O.SECOND from TABLE_TWO O where O.ID=555),
333,
444)
그리고 이것은 아무 문제없이 작동한다. 이것은 INSERT INTO ... VALUES ...
의 형식입니다. 성능 또는 다른 점에서 차이가 있습니까? 두 번째 줄은 내게 자연스러운 것처럼 보입니다.
첫 번째 예제에서는 한 번에 두 개 이상의 행을 삽입 할 수 있지만 문제가되지는 않지만 WHERE 조건에 따라 두 개 이상의 행을 삽입 할 수 있습니다. 두 번째 예에서는 단 하나의 행만 삽입합니다. –