2014-01-19 3 views
2

이라고는 할 수 없었다, 그러나 나는 (오라클 XE 및 SQL 개발자 사용)이 2 예 가로 질러 :하위 쿼리를 VALUES 키워드와 함께 사용할 수 있습니까? 내가 인상을

예 1는 - 오류

insert into regions (region_id, region_name) 
values ((select max(region_id)+1 from regions), 'Great Britain'); 

예없이 실행 2 개 - 반환 오류 (아래 그림 참조)

insert into regions (region_id, region_name) 
values (select region_id, region_name from regions); 

오류 :

Error starting at line 1 in command: 
insert into regions (region_id, region_name) 
values (select region_id, region_name from regions) 
Error at Command Line:2 Column:9 
Error report: 
SQL Error: ORA-00936: missing expression 
00936. 00000 - "missing expression" 
*Cause:  
*Action: 

그래서 더 많은 것이있는 것으로 보입니다. 누구든지 VALUES 키워드가 포함 된 하위 쿼리를 포함하면 어떤 조건에서 설명을 제공 할 수 있습니까?

답변

3

괄호 안에 하위 쿼리를 삽입해야합니다. values의 여는 괄호는 계산되지 않습니다. 하위 쿼리가 아닌 목록의 시작입니다. 하나의 행과 하나의 열을 반환 할 때 VALUES 절에 하위 쿼리를 포함 할 수 있습니다.

대신하지만,이 구문을 사용할 수 있습니다

insert into regions (region_id, region_name) 
    select max(region_id) + 1, 'Great Britain' 
    from regions; 

더 나은를 아직 region_id (신원이나 다른 데이터베이스에서 자동 증가 열)에 순서를 지정하는 것입니다 그래서 자동으로 할당됩니다. 그럼 당신은 그냥 할 :

insert into regions (region_name) 
    select 'Great Britain' 
    from dual; 
+1

그래서, 스칼라 하위 쿼리는 'VALUES' 절에서 허용됩니까? –

+1

@ JeffLevine. . . 그렇습니다, 그것은 그것을 말하는 좋은 방법입니다. ''insert '때문에'VALUES' 절을 피할 수 있습니다. . . 선택 '은 모든 일을하고, 훨씬 더 많이합니다. –

관련 문제