리트코드 Consecutive Numbers 질문드립니다!
185
27 asked
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부터 출력되어야 하는것 아닌가요?
값이 왜 다르게 나오는지 모르겠습니다. 어떻게 생각하면 좀 쉬울까요?
Answer 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
85
1
문제 내용이 잘못된 것 같습니다.
0
58
2
서브쿼리 질문
0
59
2
[수업질문] 서브쿼리 > null데이터 avg사용 주의
0
72
1
서브쿼리는 언제 작성하는건가요?
0
68
1
안녕하세요 질문드립니다.
0
66
2
Top Earners 문제관련 질문
0
96
2
고급반 cheetsheet
0
147
2
196. Delete Duplicate Emails 좋은 코드 질문
0
140
1
a.id = 1과 b.id=1이 없어도 되는 이유
0
125
0
강의 플랫폼
0
198
3
리트코드 177번 function 풀이중 case when 활용을 위한 서브쿼리 구문을 제출 시 검증에 통과되지 않도록 보강된 듯 하네요
0
205
2
ERD 읽는법에 추가 질문 있어요
0
249
1
lead, lag로 풀이할 시 id 값이 존재하지 않는 경우의 오답
0
355
2
사용자정의함수
0
230
1
이 문제 inner join이 이해가 안됩니다.
0
295
1
평균 함수 사용할 때 주의점과 해결법
0
259
1
196. subquery로 풀 때, 궁금한 점
0
382
2
쿼리성능 질문드립니다.
0
313
1
리트코드 highest department salary 문제
0
257
2
The report 문제 order by부분 질문
0
269
2
리트코드 서브쿼리 문제 질문
0
420
1
DEPARTMENT HIGHEST SALARY 서브쿼리 문제 문의
0
235
1
서브쿼리의 활용사례 및 조인관련질문
0
282
1

