리트코드 Consecutive Numbers 질문드립니다!
186
작성한 질문수 27
SELECT L.Id , L.num, L1.num
FROM Logs L inner JOIN LOGS L1
ON L.Id = L1.Id+1
------------------------------------
SELECT L.Id , L.num, L1.num
FROM Logs L inner JOIN LOGS L1
ON L.Id+1 = L1.Id
------------------------------------
비슷한 문제가 나올때마다 너무 헷갈리네요.... 두 쿼리의 차이점은 JOIN의 ON절에 사용하는 조인조건을 어떤테이블에 적용해야 하느냐 입니다.
ID와 ID+1한 것이 같다고 쓴 부분에 대해 생각해보면
두 경우 다 ID가 2부터 출력되어야 하는것 아닌가요?
값이 왜 다르게 나오는지 모르겠습니다. 어떻게 생각하면 좀 쉬울까요?
답변 1
0
안녕하세요 함문주님, 답변 드립니다.
말씀해주신 것처럼 두 쿼리는 +1을 어느 테이블의 Id에 했는지만 다르고,
첫번째 쿼리는 Id가 2부터, 두번째 쿼리는 Id가 1부터 출력됩니다.
아시다시피 JOIN 한 결과에 따라 SELECT 절에 있는 컬럼들이 출력됩니다.
첫번째 쿼리는 L1의 Id에 +1을 하여 L의 Id와 JOIN하고, L의 Id를 출력합니다.
반면 두번째 쿼리는 이와 반대로 L의 Id에 +1을 하여 L1의 Id와 JOIN했지만 똑같이 L의 Id를 출력합니다.
혹시 문제점을 아시겠나요?
두번째 쿼리에서 Id가 2부터 출력되게 하려면 L.Id가 아닌 L1.Id를 출력해야 합니다.
L.Id +1 이 L1.Id와 같으므로 L.Id가 1일때 L2.Id 는 2, L.Id가 2일때 L2.Id는 3이 출력됩니다.
따라서 지금처럼 L.Id를 출력하면 값이 1부터 나오게되고, L1.Id를 출력해야 원하시는 대로 2부터 결과가 나옵니다.
답변이 도움이 되셨길 바랍니다 :)
순위 함수 연습 문제 - 스테디셀러 작가 찾기
0
99
1
문제 내용이 잘못된 것 같습니다.
0
72
2
서브쿼리 질문
0
74
2
[수업질문] 서브쿼리 > null데이터 avg사용 주의
0
84
1
서브쿼리는 언제 작성하는건가요?
0
85
1
안녕하세요 질문드립니다.
0
71
2
Top Earners 문제관련 질문
0
100
2
고급반 cheetsheet
0
164
2
196. Delete Duplicate Emails 좋은 코드 질문
0
145
1
a.id = 1과 b.id=1이 없어도 되는 이유
0
133
0
강의 플랫폼
0
203
3
리트코드 177번 function 풀이중 case when 활용을 위한 서브쿼리 구문을 제출 시 검증에 통과되지 않도록 보강된 듯 하네요
0
213
2
ERD 읽는법에 추가 질문 있어요
0
258
1
lead, lag로 풀이할 시 id 값이 존재하지 않는 경우의 오답
0
368
2
사용자정의함수
0
233
1
이 문제 inner join이 이해가 안됩니다.
0
302
1
평균 함수 사용할 때 주의점과 해결법
0
266
1
196. subquery로 풀 때, 궁금한 점
0
391
2
쿼리성능 질문드립니다.
0
318
1
리트코드 highest department salary 문제
0
264
2
The report 문제 order by부분 질문
0
272
2
리트코드 서브쿼리 문제 질문
0
423
1
DEPARTMENT HIGHEST SALARY 서브쿼리 문제 문의
0
243
1
서브쿼리의 활용사례 및 조인관련질문
0
292
1





