SQL Interview Questions
SQL
BackendWeb DevelopmentData ScienceQuestion 41
What is the difference between a CROSS JOIN and a FULL JOIN?
Answer:
CROSS JOIN and FULL JOIN are both types of joins in SQL, but they serve very different purposes and produce different types of results. Here is an explanation of each, along with their differences:
CROSS JOIN
Purpose: The CROSS JOIN produces a Cartesian product of the two tables involved. This means it returns all possible combinations of rows from the two tables.
Characteristics
- No Join Condition: The 
CROSS JOINdoes not require a join condition (ON clause). - Result Size: The number of rows in the result set is the product of the number of rows in the first table and the number of rows in the second table.
 - Use Case: It is useful when you need to combine every row of one table with every row of another table.
 
Syntax
SELECT *
FROM table1
CROSS JOIN table2;
Example
Suppose you have two tables:
Products Table
| ProductID | ProductName | 
|---|---|
| 1 | Apple | 
| 2 | Banana | 
Suppliers Table
| SupplierID | SupplierName | 
|---|---|
| A | Supplier1 | 
| B | Supplier2 | 
CROSS JOIN Result
SELECT *
FROM Products
CROSS JOIN Suppliers;
| ProductID | ProductName | SupplierID | SupplierName | 
|---|---|---|---|
| 1 | Apple | A | Supplier1 | 
| 1 | Apple | B | Supplier2 | 
| 2 | Banana | A | Supplier1 | 
| 2 | Banana | B | Supplier2 | 
FULL JOIN
Purpose: The FULL JOIN (or FULL OUTER JOIN) combines the results of both LEFT JOIN and RIGHT JOIN. It returns all rows when there is a match in one of the tables. This means it returns all rows from both tables, with NULL values in place where there is no match.
Characteristics
- Join Condition: The 
FULL JOINrequires a join condition (ON clause) to specify how the rows between the tables should be matched. - Result Size: The result set includes all rows from both tables, with 
NULLin columns where there is no match. - Use Case: It is useful when you need to retrieve all rows from both tables and identify matching and non-matching rows.
 
Syntax
SELECT *
FROM table1
FULL JOIN table2
ON table1.column_name = table2.column_name;
Example
Suppose you have two tables:
Customers Table
| CustomerID | CustomerName | 
|---|---|
| 1 | Alice | 
| 2 | Bob | 
Orders Table
| OrderID | CustomerID | OrderDate | 
|---|---|---|
| 101 | 1 | 2023-07-01 | 
| 102 | 3 | 2023-07-02 | 
FULL JOIN Result
SELECT *
FROM Customers
FULL JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
| CustomerID | CustomerName | OrderID | OrderDate | 
|---|---|---|---|
| 1 | Alice | 101 | 2023-07-01 | 
| 2 | Bob | NULL | NULL | 
| NULL | NULL | 102 | 2023-07-02 | 
Summary of Differences
| Feature | CROSS JOIN | FULL JOIN | 
|---|---|---|
| Purpose | Produces Cartesian product of two tables | Combines results of both LEFT JOIN and RIGHT JOIN | 
| Join Condition | No join condition required | Requires a join condition (ON clause) | 
| Result Size | Product of rows in both tables | All rows from both tables, with NULLs for non-matches | 
| Use Case | Combine every row of one table with every row of another table | Retrieve all rows from both tables, with matching and non-matching rows | 
| Example | Combine Products and Suppliers to see all combinations | Combine Customers and Orders to see all customers and orders | 
Conclusion
CROSS JOIN and FULL JOIN serve different purposes in SQL:
- CROSS JOIN is used to produce a Cartesian product, combining every row of one table with every row of another table, resulting in all possible combinations.
 - FULL JOIN is used to combine the results of 
LEFT JOINandRIGHT JOIN, returning all rows from both tables withNULLvalues where there is no match. 
Understanding the differences between these joins allows you to use them appropriately based on the requirements of your data retrieval and manipulation tasks.