mySQL 3개의 JOIN 으로 한 테이블의 같은 칼럼을 두 번 사용하기

이석원·2022년 8월 7일
0


스키마는 위와 같다. 이 3가지 테이블을 조합해서 아래와 같은 결과값을 얻는다.

posts 테이블과 users 테이블을 join 하고,
users 테이블과 likes 테이블을 join 하고,
likes 테이블과 users 테이블을 join 한다.
이때 다음과 같이 SQL 을 작성하면 오류가 발생한다.

SELECT posts.id, posts.content, users.name, users.name 
FROM posts 
JOIN users ON posts.user_id=users.id 
JOIN likes ON posts.id=likes.post_id 
JOIN users  ON users.id=likes.user_id 
WHERE posts.content LIKE "%무엇인가%" 
AND users.name = "Rebekah";


users 테이블이 두 번 사용되어 오류가 발생했다. 이럴때는 트릭을 써야 한다. 아래와 같이 SQL 을 작성한다.

SELECT posts.id, posts.content, users.name, u2.name 
FROM posts 
JOIN users ON posts.user_id=users.id 
JOIN likes ON posts.id=likes.post_id 
JOIN users u2 ON u2.id=likes.user_id 
WHERE posts.content LIKE "%무엇인가%" 
AND u2.name = "Rebekah";

3번째 join 의 users 를 u2 로 alias 를 사용했다. 이렇게 할 경우 error 1066 이 발생하지 않는다. users 테이블의 name 을 두번 사용할 수 있게됐다.

profile
개발자 공부중

0개의 댓글