Ao contrário do LEFT JOIN, a cláusula RIGHT JOIN ou RIGHT OUTER JOIN retorna todos os dados encontrados na tabela à direita de JOIN. Caso não existam dados associados entre as tabelas à esquerda e à direita de JOIN, serão retornados valores nulos.
Visão geral
RIGHT JOIN retorna todos os registros da tabela à direita (Tabela 2) e os registros correspondentes da tabela à esquerda (Tabela 1). O resultado é NULL do lado esquerdo, quando não há correspondência, como mostra a Figura 1.

Considere o seguinte cenário: temos duas tabelas - professor (Tabela 1) e turma (Tabela 2), e precisamos fazer uma consulta de todos as turmas com seus respectivos professores. Se usássemos o INNER JOIN somente as turmas com professor vinculado viriam no resultado. Para trazer o resultado completo, mesmo com turmas sem professor, podemos utilizar o RIGHT, tendo em vista que a tabela professor vem a direita na query.
| id | nome | idturma |
| 1 | Cintia Pereira | 1 |
| 2 | Lucas Gabriel | 2 |
| 3 | Felipe Bruno | 1 |
| 4 | Thiago Barcelos | 2 |
| 5 | Bruno Reis | 3 |
| 6 | Osvaldo Sobrinho | |
| 7 | Fabiano Francisco |
| id | nome | idturma |
| 1 | Lucas Gabriel | 1 |
| 2 | Fernando Souza | 2 |
| 3 | Gabriela Romero | 1 |
| 4 | Thiago Enrique | 2 |
| 5 | Gabriel Dias | 3 |
| 6 | Ricardo Pereira | 4 |
| id | nome |
| 1 | Turma A |
| 2 | Turma B |
| 3 | Turma C |
| 4 | Turma D |
| 5 | Turma E |
SELECT
turma.nome as Turma,
professor.nome as Professor
FROM
professor
RIGHT JOIN
turma ON turma.id = professor.idturmaO resultado é apresentado na Tabela 4, com informações de todas as tabelas vinculadas, e quando não houve correspondência, o valor null veio na relação.
| Turma | Professor |
| TURMA A | Cintia Pereira |
| TURMA B | Lucas Gabriel |
| TURMA A | Felipe Bruno |
| TURMA B | Thiago Barcelos |
| TURMA C | Bruno Reis |
| TURMA D | NULL |
| TURMA E | NULL |
Sintaxe
SELECT
[ tabela1.coluna1, tabela1.coluna2, ... | N.coluna1, N.coluna2, … ]
FROM
[ tabela1 | tabela1 F ]
RIGHT JOIN
[ tabelaX | tabelaX N]
ON
[ tabelaX.coluna1 = tabela1.coluna1 | N.coluna1 = F.coluna1 ]Na prática
Exemplo 1
Novamente, podemos adicionar mais uma tabela a essa consulta, contendo informações relacionadas aos professores de cada turma, sendo que pode haver alguma turma sem professor:
SELECT
aluno.nome as Aluno,
turma.nome as Turma,
professor.nome as Professor
FROM
aluno
INNER JOIN
turma ON turma.id = aluno.idturma
RIGHT JOIN
professor ON turma.id = professor.idturmaTeremos novamente como resultado a junção das três tabelas, aluno, professor e turma, conforme ilustra Tabela 5, vindo todos os alunos com turma e todas as turmas vinculadas, com ou sem professor.
| Aluno | Turma | Professor |
| Lucas Gabriel | Turma A | Cintia Pereira |
| Lucas Gabriel | Turma A | Felipe Bruno |
| Fernando Souza | Turma B | Lucas Gabriel |
| Fernando Souza | Turma B | Thiago Barcelos |
| Gabriela Romero | Turma A | Cintia Pereira |
| Gabriela Romero | Turma A | Felipe Bruno |
| Thiago Enrique | Turma B | Lucas Gabriel |
| Thiago Enrique | Turma B | Thiago Barcelos |
| Gabriel Dias | Turma C | Bruno Reis |
| NULL | NULL | Osvaldo Sobrinho |
| NULL | NULL | Fabiano Francisco |