하위질의에서 where문을 쓸때 어떤 답안은 where 00 = (~) 이런식으로 쓰는것도 있고, 어떤 답안은 where 00 in (~) 이런식으로 쓰는것도 있던데요
=이나 in의 차이점이 무엇인가요?
안녕하세요 길벗수험서 운영팀입니다.
하위질의의 결과가 하나일 때는 =와 in 중 어떤 것을 사용하셔도 무관합니다.
다만, 2개 이상의 결과가 하위질의에서 나오는 경우 반드시 in을 사용해주어야 합니다.
행복한 하루되세요 :)
-
관리자2020-10-14 09:47:08
안녕하세요 길벗수험서 운영팀입니다.
하위질의의 결과가 하나일 때는 =와 in 중 어떤 것을 사용하셔도 무관합니다.
다만, 2개 이상의 결과가 하위질의에서 나오는 경우 반드시 in을 사용해주어야 합니다.
행복한 하루되세요 :)
-
관리자2020-10-14 11:36:49
안녕하세요 길벗수험서 운영팀입니다.
<경기>테이블에서 '순위'가 3이하인 선수들의 '코드'를 받아 <선수> 테이블에서 해당 선수들의 튜플을 조회하는 SQL 코드를 만들어보죠. (각 순위 당 한명의 선수만 있다고 가정합니다.)
select * from 선수 where 코드 in (select 코드 from 경기 where 순위 <=3);
이정도가 되겠네요.
이 경우 하위 질의인 'select 코드 from 경기 where 순위 <=3'로 출력되는 결과가 3개라고 추측할 수 있습니다.
이때에 상위 질의의 where문에 들어가야 하는 것은
where 코드 in 이지
where 코드 = 가 들어가게 되면 오류가 발생합니다.
where 코드 = 는 하위질의의 결과가 하나일 때만 사용이 가능하기 때문이죠.
즉, 하위 질의인 'select 코드 from 경기~'로 나오는 값이 단 하나일 때만 사용이 가능하다는 것이므로 만약 문제가 "'순위'가 1위인 선수"라고 수정된다면 이렇게 쓸 수 있습니다.
select * from 선수 where 코드 = (select 코드 from 경기 where 순위 = 1);
행복한 하루되세요 :)
-
*2020-10-14 10:32:11
2개이상의 결과가 나온다는것이 어떤것인지 설명해주실 수 있으신가요? 이해가 잘 안되어서요