• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

쿼리문 질문드립니다.

22.03.08 16:14 작성 조회수 135

0

아래와 같은쿼리문이 있을 때

select User.id,User.nick

, followes->follow.

~~

from users as User

left join

(

follow as followes->follow

inner join users as followes

on followes.id = followes->follow .followerid

)

on User.id = followes->follow .followerid

where User.id = 3

 
여기서 

쿼리문 실행순서가

1. from

2. on

3. join

4.where

이순으로 알고있는데

여기서 from users as User 전체 User데이터 뽑고나서

어떤 순서로 실행이 되는지 궁금합니다.

제생각으로는 left join 이 실행이 되는데 그안 괄호먼저 실행이 되어서

follow as followes->follow

inner join users as followes

on followes.id = followes->follow .followerid

follow 테이블과 users 테이블의 id가 같은것을 뽑아서

left join 주체가 되는 user 테이블의 id와 같은것을 찾고

그후에 where user.id = 3 이 실행될꺼같은데

저 중간에 있는 on이 join문끝에있는 on이 아니라 다른것인가요?? 궁금합니다.

답변 1

답변을 작성해보세요.

0

쿼리문 앞에 explain 붙여보시면 순서가 나옵니다.

제 생각에는 User.id가 3인 로우 먼저 찾고, 그걸 left join으로 follow와 합쳐서 follow에서 user.id가 3인 것을 찾고, 마지막으로 follow.followerId들을 user와 inner join할 것 같은데요.