2010-03-10 3 views
0

내가 돌아 여러 행과 문제를 이해 해달라고 :하위 쿼리 도움말 반환 이상 1 행

여기

내 테이블 BBC된다

name region area population gdp 
Afghanistan South Asia 652225 26000000  
Albania Europe 28728 3200000 6656000000 
Algeria Middle East 2400000 32900000 75012000000 
Andorra Europe 468 64000 
Angola Africa 1250000 14500000 14935000000 
etc............................. 

질문 :

목록의 이름과 국가 을의 지역 '인도'가 포함 된 지역은 '이란'입니다.

select name from bbc where region = (select region from bbc where name='India' or name='Iran') 

가 반환 :

sql: errorSubquery returns more than 1 row 

무슨 잘못 내 문을

이 내 문입니까? 대답은 선택 진술서 내에서 선택 진술 형식이어야합니다.

감사합니다!

답변

6

region을 값 표와 비교하려고하기 때문입니다.

select name 
from bbc 
where region in 
    (select region from bbc where name='India' or name='Iran') 
3

당신은 약간 다른 구문이있을 수 있습니다 그것은 작동합니다 : 대신, in를 사용해보십시오 유일한 차이점은 대신 등호 (=)로, 우리가 사용하는 것을

SELECT name 
FROM bbc 
WHERE region IN 
(
    SELECT region FROM bbc WHERE name='India' OR name='Iran' 
) 

.

이전에 실패한 이유는 equals를 사용했기 때문이며 한 값과 다른 값을 비교합니다. 우연히 한 일은 하나의 값을 여러 값과 비교하는 것입니다 ("SubQuery는 둘 이상의 행을 반환합니다"). 여기서 변경은 region이 하위 쿼리에서 반환 된 결과 내에있는 것입니다.

1

bbc에서 지역 선택 (bbc에서 지역 선택 IN 이름 ('인도', '이란'))