RIGHT JOINは、結合先のテーブル(右のテーブルと呼ぶ)にある行はすべて残し、結合元のテーブル(左のテーブルと呼ぶ)に一致するデータがない場合は、NULLを補って結合結果に含める。
https://www.postgresql.jp/docs/9.4/queries-table-expressions.html
postgresdb1=# SELECT * FROM users;
id | name
----+-------
1 | Alice
2 | Bob
(2 行)
postgresdb1=# SELECT * FROM test_results;
id | user_id | score
----+---------+-------
1 | 1 | 80
2 | 3 | 90
(2 行)
postgresdb1=# SELECT
users.name,
test_results.score
FROM
users
JOIN
test_results ON users.id = test_results.user_id;
name | score
-------+-------
Alice | 80
(1 行)
postgresdb1=# SELECT
users.name,
test_results.score
FROM
users
RIGHT JOIN
test_results ON users.id = test_results.user_id;
name | score
-------+-------
Alice | 80
| 90
(2 行)
postgresdb1=#JOINだと条件に合うのはAliceだけだが、RIGHT JOINだとuser_idが3でnameなどが空でscoreが90の行もできる。