본문 바로가기
C.W.K.
Stream
Lesson 03 of 10 · published

INNER JOIN — 기본

~12 min · joins, inner-join, querying

Level 0Scout
0 XP0/80 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

양쪽 테이블에 다 있는 row

INNER JOIN은 join 조건이 true가 되는 두 테이블의 row 짝마다 결과 row를 하나씩 내놔. 어느 쪽이든 짝을 못 찾은 row는 결과에서 빠져.

SELECT cols FROM A INNER JOIN B ON A.x = B.x;

JOIN만 써도 INNER JOIN이야. 키워드는 생략해도 되지만, 적어두면 다음에 읽는 사람한테 의도가 분명해져.

Tip: 테이블에는 항상 alias를 붙이고(FROM authors a INNER JOIN posts p) 컬럼도 어느 테이블 건지 밝혀. id라는 컬럼이 양쪽에 다 있는데 alias를 안 붙인 query는 읽기도 어렵고 조용히 애매해져.

Code

post에 author 정보까지 붙여서·sql
SELECT p.id, p.title, a.name AS author, a.email
FROM   posts p
INNER  JOIN authors a ON a.id = p.author_id
ORDER  BY p.created_at DESC
LIMIT  20;
3 테이블 inner join·sql
-- conversations + messages + brain stat
SELECT c.id, c.title, count(m.id) AS msg_count, c.brain
FROM   conversations c
INNER  JOIN messages m ON m.conversation_id = c.id
GROUP  BY c.id
HAVING count(m.id) > 5;

External links

Exercise

authors, posts, comments를 만들어봐. 표본 데이터에는 글을 하나도 안 쓴 author 한 명과 댓글이 하나도 안 달린 post 하나를 꼭 넣어. INNER JOIN query를 세 개 써. post와 author를 붙이는 것, post와 comment를 붙이는 것, 셋을 다 붙이는 것. 각각에서 짝을 못 찾은 경우 때문에 row가 몇 개 사라졌는지 COUNT로 직접 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.