Bird
Raised Fist0
SQLquery~5 mins

Non-equi joins in SQL - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

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
Recall & Review
beginner
What is a non-equi join in SQL?
A non-equi join is a type of join where the join condition uses operators other than '=' such as <, >, <=, >=, or <>. It matches rows based on a range or inequality condition instead of exact equality.
Click to reveal answer
beginner
Which SQL operators are commonly used in non-equi joins?
Operators like <, >, <=, >=, and <> (not equal) are commonly used in non-equi joins to compare columns with inequalities.
Click to reveal answer
intermediate
Why might you use a non-equi join instead of an equi join?
You use a non-equi join when you want to match rows based on ranges or inequalities, such as finding which price range a product falls into or matching dates within a period, rather than exact matches.
Click to reveal answer
intermediate
Example: How would you join two tables where one table's value is between two columns of another table?
You can write a join condition like: ON table1.value >= table2.range_start AND table1.value <= table2.range_end. This is a non-equi join using inequalities.
Click to reveal answer
intermediate
Can non-equi joins be used with INNER JOIN, LEFT JOIN, or other join types?
Yes, non-equi join conditions can be used with INNER JOIN, LEFT JOIN, RIGHT JOIN, or FULL JOIN. The difference is only in the join condition, not the join type.
Click to reveal answer
Which of the following is an example of a non-equi join condition?
Atable1.value > table2.min_value
Btable1.id = table2.id
Ctable1.name = table2.name
Dtable1.date = table2.date
What is a common use case for non-equi joins?
AMatching rows with exact IDs
BMatching rows based on ranges or intervals
CCombining tables without any condition
DFiltering rows with NULL values
Which SQL clause typically contains the non-equi join condition?
AWHERE
BGROUP BY
CORDER BY
DON
Can you use non-equi join conditions with LEFT JOIN?
AOnly with INNER JOIN
BNo
CYes
DOnly with CROSS JOIN
Which operator is NOT used in non-equi joins?
A=
B<
C>=
D<>
Explain what a non-equi join is and give a simple example of when you might use it.
Think about joining tables where values fall between ranges instead of matching exactly.
You got /3 concepts.
    Describe how non-equi joins differ from equi joins and why that difference matters.
    Focus on the type of comparison used in the join condition.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is a non-equi join in SQL?
      easy
      A. A join that uses conditions other than equality, like <, >, or BETWEEN.
      B. A join that only matches rows with equal values in both tables.
      C. A join that combines all rows from both tables regardless of condition.
      D. A join that uses only the AND logical operator in the ON clause.

      Solution

      1. Step 1: Understand join conditions

        Equi joins use equality (=) to match rows. Non-equi joins use other operators like <, >, or BETWEEN.
      2. Step 2: Identify non-equi join definition

        Since non-equi joins match rows based on inequalities or ranges, A join that uses conditions other than equality, like <, >, or BETWEEN. correctly describes this.
      3. Final Answer:

        A join that uses conditions other than equality, like <, >, or BETWEEN. -> Option A
      4. Quick Check:

        Non-equi join = condition other than = [OK]
      Hint: Non-equi joins use <, >, or BETWEEN, not just = [OK]
      Common Mistakes:
      • Confusing non-equi join with equi join
      • Thinking non-equi join matches all rows
      • Assuming only AND operator defines non-equi join
      2. Which of the following is the correct syntax for a non-equi join using BETWEEN?
      easy
      A. SELECT * FROM A JOIN B ON A.value IN BETWEEN B.min AND B.max;
      B. SELECT * FROM A JOIN B ON A.value = BETWEEN B.min AND B.max;
      C. SELECT * FROM A JOIN B ON BETWEEN A.value AND B.min AND B.max;
      D. SELECT * FROM A JOIN B ON A.value BETWEEN B.min AND B.max;

      Solution

      1. Step 1: Recall BETWEEN syntax

        BETWEEN is used as: column BETWEEN low AND high, without extra operators.
      2. Step 2: Check each option

        SELECT * FROM A JOIN B ON A.value BETWEEN B.min AND B.max; uses correct syntax: A.value BETWEEN B.min AND B.max. Others misuse BETWEEN or add extra operators.
      3. Final Answer:

        SELECT * FROM A JOIN B ON A.value BETWEEN B.min AND B.max; -> Option D
      4. Quick Check:

        BETWEEN syntax = column BETWEEN low AND high [OK]
      Hint: BETWEEN syntax: column BETWEEN low AND high, no extra operators [OK]
      Common Mistakes:
      • Adding = before BETWEEN
      • Using IN BETWEEN instead of BETWEEN
      • Placing BETWEEN incorrectly in ON clause
      3. Given tables Products(product_id, price) and Discounts(min_price, max_price, discount_rate), what does this query return?
      SELECT p.product_id, d.discount_rate
      FROM Products p
      JOIN Discounts d ON p.price >= d.min_price AND p.price < d.max_price;
      medium
      A. Only products with price exactly equal to min_price or max_price.
      B. All products joined with all discounts regardless of price.
      C. All products with their matching discount rate based on price ranges.
      D. Syntax error due to invalid join condition.

      Solution

      1. Step 1: Analyze join condition

        The join matches products where price is between min_price (inclusive) and max_price (exclusive).
      2. Step 2: Understand result

        This returns products with their discount rate if their price falls in the discount's price range.
      3. Final Answer:

        All products with their matching discount rate based on price ranges. -> Option C
      4. Quick Check:

        Non-equi join matches price ranges = All products with their matching discount rate based on price ranges. [OK]
      Hint: Non-equi join matches ranges using >= and < [OK]
      Common Mistakes:
      • Thinking only exact matches are returned
      • Assuming all products join with all discounts
      • Believing the query has syntax errors
      4. Identify the error in this non-equi join query:
      SELECT e.name, s.salary_grade
      FROM Employees e
      JOIN SalaryGrades s ON e.salary => s.min_salary AND e.salary <= s.max_salary;
      medium
      A. The join condition should use OR instead of AND.
      B. The operator => is invalid; it should be >=.
      C. The table alias 's' is missing in the SELECT clause.
      D. The query is missing a WHERE clause.

      Solution

      1. Step 1: Check operators in join condition

        The operator => is not valid SQL; the correct operator for 'greater than or equal' is >=.
      2. Step 2: Verify other parts

        AND is correct to check salary between min and max. Aliases and WHERE clause are not errors here.
      3. Final Answer:

        The operator => is invalid; it should be >=. -> Option B
      4. Quick Check:

        Use >=, not => for greater or equal [OK]
      Hint: Use >=, not =>, for greater or equal operator [OK]
      Common Mistakes:
      • Typing => instead of >=
      • Replacing AND with OR incorrectly
      • Confusing alias usage in SELECT
      5. You have a table Scores(student_id, score) and a table Grades(grade, min_score, max_score). Write a query to assign each student their grade based on their score using a non-equi join.
      Which query correctly implements this?
      hard
      A. SELECT s.student_id, g.grade FROM Scores s JOIN Grades g ON s.score >= g.min_score AND s.score < g.max_score;
      B. SELECT s.student_id, g.grade FROM Scores s JOIN Grades g ON s.score <= g.min_score AND s.score >= g.max_score;
      C. SELECT s.student_id, g.grade FROM Scores s JOIN Grades g ON s.score > g.min_score AND s.score <= g.max_score;
      D. SELECT s.student_id, g.grade FROM Scores s JOIN Grades g ON s.score BETWEEN g.min_score AND g.max_score;

      Solution

      1. Step 1: Understand grading ranges

        Grades are assigned where score is between min_score (inclusive) and max_score (exclusive) to avoid overlap.
      2. Step 2: Check each join condition

        SELECT s.student_id, g.grade FROM Scores s JOIN Grades g ON s.score >= g.min_score AND s.score < g.max_score; uses s.score >= g.min_score AND s.score < g.max_score, correctly defining non-overlapping ranges.
      3. Step 3: Verify other options

        SELECT s.student_id, g.grade FROM Scores s JOIN Grades g ON s.score BETWEEN g.min_score AND g.max_score; includes max_score in BETWEEN (inclusive), which may cause overlap. SELECT s.student_id, g.grade FROM Scores s JOIN Grades g ON s.score > g.min_score AND s.score <= g.max_score; reverses inclusivity. SELECT s.student_id, g.grade FROM Scores s JOIN Grades g ON s.score <= g.min_score AND s.score >= g.max_score; reverses logic incorrectly.
      4. Final Answer:

        SELECT s.student_id, g.grade FROM Scores s JOIN Grades g ON s.score >= g.min_score AND s.score < g.max_score; -> Option A
      5. Quick Check:

        Use >= min and < max for non-overlapping ranges [OK]
      Hint: Use >= min_score and < max_score for clean grade ranges [OK]
      Common Mistakes:
      • Using BETWEEN which includes max_score causing overlap
      • Swapping < and > operators
      • Using incorrect inclusivity causing duplicate grades