메인 콘텐츠로 건너뛰기

VillageSQL is a drop-in replacement for MySQL with extensions.

All examples on this page work on VillageSQL. Install Now →
RIGHT JOIN은 일치 여부와 관계없이 오른쪽 테이블의 모든 행을 유지합니다. LEFT JOIN의 거울상이고 LEFT JOIN이 할 수 없는 일은 하나도 하지 않으므로, 이 레슨은 짧습니다. 그래도 다른 사람의 SQL에서 RIGHT JOIN을 읽게 될 것이기 때문에 이 레슨이 존재합니다. 시작하기 전에 mysql -u root -p sakila로 클라이언트를 여세요.

RIGHT JOIN의 동작 방식

COLUMN_LIST를 원하는 열로, LEFT_TABLE을 시작하는 테이블로, RIGHT_TABLE을 모든 행을 유지하고 싶은 테이블로, 각 COLUMN_NAME을 그쪽에서 둘을 잇는 열로 바꾸세요. 아무것과도 일치하지 않는 오른쪽 행은 왼쪽 테이블의 모든 열이 NULL로 설정된 채 돌아옵니다. RIGHT OUTER JOIN은 같은 절을 풀어 쓴 것입니다.

예제

  1. 두 번째 테이블의 모든 행 유지하기

film이 왼쪽에 있고 language가 오른쪽에 있으므로, 이 쿼리는 6개의 언어를 모두 유지합니다.
1,005개의 행으로, LEFT JOIN 레슨이 같은 2개의 테이블을 반대 순서로 써서 얻은 것과 같은 수입니다.

  1. 아무것과도 일치하지 않은 행 나열하기

왼쪽 조인과 같은 패턴이고, 이번에는 NULL 검사가 왼쪽 테이블에 있습니다.
어떤 영화도 쓰지 않는 5개의 언어입니다.

모든 RIGHT JOIN은 LEFT JOIN으로 쓸 수 있습니다

a RIGHT JOIN b는 b LEFT JOIN a와 같은 행을 반환합니다. 2개의 테이블 이름을 바꾸고 키워드를 바꾸면 답은 변하지 않습니다. SELECT *를 쓰면 열이 다른 순서로 돌아오는데, *가 테이블이 FROM에 나타난 순서대로 펼쳐지기 때문이므로, 순서가 중요하다면 열의 이름을 쓰세요. 읽게 되는 대부분의 SQL이 LEFT JOIN으로 쓰여 있는 이유가 그것입니다: 쿼리 안의 모든 조인이 같은 방향으로 기울어 있으면 쿼리를 따라가기 더 쉽습니다. WHERE 함정을 포함한 그 밖의 모든 것은 LEFT JOIN 레슨이 설명하는 그대로, 왼쪽과 오른쪽만 바뀐 채 동작합니다.

요약

  • 두 번째로 이름을 쓴 테이블의 모든 행을 유지하려면 RIGHT JOIN을 쓰세요.
  • 아무것과도 일치하지 않은 행에서는 왼쪽의 모든 열에 NULL이 있다고 예상하세요.
  • a RIGHT JOIN b를 b LEFT JOIN a로 읽고, * 대신 열의 이름을 쓰세요.
  • 직접 쓰는 SQL에서는 LEFT JOIN을 쓰세요. 쿼리 안의 조인이 모두 같은 방향으로 기울어지게 됩니다.

함께 보기