인프런 커뮤니티 질문&답변

쿼딍 님의 프로필 이미지
쿼딍

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스

쿼리문 순서 질문

작성

·

173

0

안녕하세요 강사님.
 
좀 쓸데없는 질문이긴 한데
쿼리문 실행 흐름이 대략 FROM WHERE GROUP BY HAVING SELECT ORDER BY
이런 식으로 실행된다고 배웠습니다.
그런데
 
SELECT TOP 1 * FROM batting WHERE teamID = 'BOS' ORDER BY HR DESC; --보스턴 팀 소속으로 단일 년도 최다 홈런을 친 사람의 정보
 
해당 쿼리문에서
ORDER 보다 SELECT가 먼저 실행된다면
아직 홈런 횟수를 내림차순 하기 이전의 테이블에서
최상단의 행을 가져오기 때문에
원래라면 의도하는 결과가 나오지 않는 것이 아닌지 궁금합니다.
 
감사합니다.
 

답변 1

2

Rookiss님의 프로필 이미지
Rookiss
지식공유자

느낌적으로 FROM - WHERE 순서로 실행된다는 것을 강조한 것이지만,
사실 SQL 구문은 원리가 굉장히 복잡하고 말씀주신 것처럼 다양한 상황이 있습니다.
기본적으로 SELECT를 해서 집합을 갖고 오고 ORDER BY 로 행을 정렬하는게 일반적이지만,
TOP1 등이 붙으면 정말 제일 좋은 후보 1개만 갖고 오면 되니,
전체를 갖고오고 정렬하는 대신 내부 알고리즘이 바뀔 수가 있겠죠.

쿼딍 님의 프로필 이미지
쿼딍

작성한 질문수

질문하기