Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Understanding RIGHT JOIN Execution Behavior in SQL
📖 Scenario: You work at a small bookstore that keeps two tables: one for books and one for authors. Some books might not have an author listed yet. You want to see all authors and any books they wrote, including authors who have no books listed.
🎯 Goal: Build a SQL query using RIGHT JOIN to list all authors and their books, showing authors even if they have no books.
📋 What You'll Learn
Create a table called books with columns book_id (integer) and author_id (integer), and title (text).
Create a table called authors with columns author_id (integer) and name (text).
Insert the exact data provided into both tables.
Write a RIGHT JOIN query joining books to authors on author_id.
Select authors.name and books.title in the output.
💡 Why This Matters
🌍 Real World
Bookstores and many businesses use joins to combine related data from different tables, such as authors and books.
💼 Career
Understanding RIGHT JOIN is important for database querying roles, data analysis, and backend development.
Progress0 / 4 steps
1
Create the books and authors tables with data
Create a table called books with columns book_id (integer), author_id (integer), and title (text). Then create a table called authors with columns author_id (integer) and name (text). Insert these rows into books: (1, 101, 'Learn SQL'), (2, 102, 'Advanced SQL'). Insert these rows into authors: (101, 'Alice'), (102, 'Bob'), (103, 'Charlie').
SQL
Hint
Use CREATE TABLE statements for both tables and INSERT INTO for each row exactly as given.
2
Set up the join condition variable
Create a variable or comment named join_condition that holds the join condition books.author_id = authors.author_id to use in the RIGHT JOIN.
SQL
Hint
Use a comment or variable named join_condition exactly with the text books.author_id = authors.author_id.
3
Write the RIGHT JOIN query using the join condition
Write a SQL query that selects authors.name and books.title from books RIGHT JOIN authors ON the join condition books.author_id = authors.author_id.
SQL
Hint
Use RIGHT JOIN with the exact join condition and select the columns as specified.
4
Complete the query with ordering
Add an ORDER BY authors.name clause at the end of the query to sort the results by author name.
SQL
Hint
Add ORDER BY authors.name exactly at the end of the query.
Practice
(1/5)
1. What does a RIGHT JOIN do in SQL?
easy
A. Returns all rows from the right table and matching rows from the left table.
B. Returns all rows from the left table and matching rows from the right table.
C. Returns only rows that have matching values in both tables.
D. Returns all rows from both tables, matching where possible.
Solution
Step 1: Understand RIGHT JOIN behavior
A RIGHT JOIN returns all rows from the right table regardless of matches in the left table.
Step 2: Identify matching rows from the left table
It includes matching rows from the left table and fills NULL where no match exists.
Final Answer:
Returns all rows from the right table and matching rows from the left table. -> Option A
Quick Check:
RIGHT JOIN = all right table rows + matched left rows [OK]
Hint: Remember: RIGHT JOIN keeps all right table rows [OK]
Common Mistakes:
Confusing RIGHT JOIN with LEFT JOIN
Thinking it returns only matching rows
Assuming it returns all rows from left table
2. Which of the following is the correct syntax for a RIGHT JOIN between tables Employees and Departments on DepartmentID?
easy
A. SELECT * FROM Employees RIGHT Departments JOIN ON Employees.DepartmentID = Departments.DepartmentID;
B. SELECT * FROM Employees JOIN Departments RIGHT ON Employees.DepartmentID = Departments.DepartmentID;
C. SELECT * FROM Employees RIGHT JOIN Departments WHERE Employees.DepartmentID = Departments.DepartmentID;
D. SELECT * FROM Employees RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
Solution
Step 1: Identify correct JOIN syntax
The correct syntax is: FROM left_table RIGHT JOIN right_table ON condition.
Step 2: Match the syntax with given options
SELECT * FROM Employees RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID; correctly uses RIGHT JOIN with ON clause and proper table order.
Final Answer:
SELECT * FROM Employees RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID; -> Option D
Quick Check:
RIGHT JOIN syntax = FROM left RIGHT JOIN right ON condition [OK]
Hint: RIGHT JOIN syntax: FROM left RIGHT JOIN right ON condition [OK]
Common Mistakes:
Placing RIGHT keyword after JOIN
Using WHERE instead of ON for join condition
Incorrect table order in JOIN
3. Given tables: Employees: ID | Name | DeptID 1 | Alice | 10 2 | Bob | 20 3 | Carol | NULL
What is the result of: SELECT Employees.Name, Departments.DeptName FROM Employees RIGHT JOIN Departments ON Employees.DeptID = Departments.DeptID;?
medium
A. [('Alice', 'Sales'), ('Bob', 'Marketing'), (NULL, 'HR')]
B. [('Alice', 'Sales'), ('Bob', 'Marketing')]
C. [('Alice', 'Sales'), ('Bob', 'Marketing'), ('Carol', NULL)]
D. [('Alice', 'Sales'), ('Bob', 'Marketing'), ('Carol', 'HR')]
Solution
Step 1: Identify RIGHT JOIN effect on rows
RIGHT JOIN keeps all Departments rows (right table), matching Employees rows or NULL if no match.
Step 2: Match Employees to Departments by DeptID
DeptID 10 matches Alice, 20 matches Bob, 30 has no employee so NULL for Name.
Final Answer:
[('Alice', 'Sales'), ('Bob', 'Marketing'), (NULL, 'HR')] -> Option A
Quick Check:
RIGHT JOIN keeps all right rows, unmatched left columns NULL [OK]
Hint: RIGHT JOIN keeps all right rows, unmatched left columns NULL [OK]
Common Mistakes:
Ignoring unmatched right table rows
Assuming unmatched left rows appear
Mixing up NULL placement
4. Consider this SQL query: SELECT * FROM Orders RIGHT JOIN Customers ON Orders.CustomerID = Customers.ID; It returns fewer rows than expected. What is a likely cause?
medium
A. RIGHT JOIN always returns fewer rows than LEFT JOIN.
B. Orders table is empty, so no rows are returned.
C. The JOIN condition uses wrong column names causing no matches.
D. RIGHT JOIN syntax requires WHERE instead of ON clause.
Solution
Step 1: Analyze JOIN condition correctness
If column names in ON clause are wrong, no matches occur, reducing rows.
Step 2: Understand RIGHT JOIN behavior with no matches
RIGHT JOIN still returns all right table rows, but if condition is wrong, matches fail and left columns are NULL.
Final Answer:
The JOIN condition uses wrong column names causing no matches. -> Option C
Quick Check:
Wrong ON columns cause fewer matches [OK]
Hint: Check ON clause column names carefully [OK]
Common Mistakes:
Assuming RIGHT JOIN returns fewer rows by default
Confusing ON and WHERE clauses
Ignoring empty tables impact
5. You have two tables: Products: ProductID | Name 1 | Pen 2 | Pencil 3 | Eraser
You want a report showing all products and their sold quantities, including products with no sales (show quantity as 0). Which query correctly uses RIGHT JOIN and handles missing sales?
hard
A. SELECT Products.Name, Sales.Quantity FROM Products RIGHT JOIN Sales ON Products.ProductID = Sales.ProductID;
B. SELECT Products.Name, COALESCE(Sales.Quantity, 0) AS Quantity FROM Sales RIGHT JOIN Products ON Sales.ProductID = Products.ProductID;
C. SELECT Products.Name, COALESCE(Sales.Quantity, 0) AS Quantity FROM Products LEFT JOIN Sales ON Products.ProductID = Sales.ProductID;
D. SELECT Products.Name, Sales.Quantity FROM Sales LEFT JOIN Products ON Sales.ProductID = Products.ProductID;
Solution
Step 1: Identify which table is right and which is left
Products is the right table to keep all products; Sales is left table.
Step 2: Use RIGHT JOIN from Sales to Products and handle NULLs
RIGHT JOIN keeps all Products rows; COALESCE replaces NULL sales quantity with 0.
Final Answer:
SELECT Products.Name, COALESCE(Sales.Quantity, 0) AS Quantity FROM Sales RIGHT JOIN Products ON Sales.ProductID = Products.ProductID; -> Option B
Quick Check:
RIGHT JOIN keeps all right rows; COALESCE handles NULLs [OK]
Hint: Use COALESCE to replace NULLs after RIGHT JOIN [OK]