SQL Non-Equi JOIN
Any join whose condition uses something other than = — the general family the JOINs with Comparison Operators lesson introduced, now named explicitly.
What & Why
"Non-equi join" is simply the name for any join whose ON condition doesn't use plain equality — >, <, >=, <=, or != all qualify. It's a category label for the comparison-operator technique from two lessons ago, not a different SQL keyword.
See How It Works
BUSINESS QUESTION
SaaS finance matches each account to invoices whose amount is at least that account's MRR.
| id | name | plan | mrr | created_at | churned_at | country | employee_count | industry |
|---|---|---|---|---|---|---|---|---|
| 1 | Acme Labs | growth | 240.00 | 2024-01-08 10:00:00+00 | NULL | US | 45 | software |
| 2 | Northstar Co | starter | 90.00 | 2024-02-12 09:30:00+00 | 2024-05-18 12:00:00+00 | CA | 18 | services |
| 3 | Atlas Works | scale | 480.00 | 2024-03-04 15:10:00+00 | NULL | GB | 120 | manufacturing |
| 4 | Bright Path | growth | 180.00 | 2024-04-19 11:45:00+00 | NULL | US | 62 | education |
| id | account_id | amount | status | due_date | paid_at |
|---|---|---|---|---|---|
| 10 | 1 | 240.00 | paid | 2024-02-01 | 2024-01-29 13:00:00+00 |
| 11 | 1 | 260.00 | paid | 2024-03-01 | 2024-02-28 16:30:00+00 |
| 12 | 2 | 90.00 | overdue | 2024-03-15 | NULL |
| 13 | 3 | 480.00 | open | 2024-04-01 | NULL |
EXAMPLE QUERY
SELECT
a.name,
a.mrr,
i.id AS invoice_id,
i.amount
FROM saas.accounts a
JOIN saas.invoices i
ON i.account_id = a.id
AND i.amount >= a.mrr
ORDER BY a.name, invoice_id;RESULT — exact output from the displayed Queryflo rows
| name | mrr | invoice_id | amount |
|---|---|---|---|
| Acme Labs | 240.00 | 10 | 240.00 |
| Acme Labs | 240.00 | 11 | 260.00 |
| Atlas Works | 480.00 | 13 | 480.00 |
| Northstar Co | 90.00 | 12 | 90.00 |
The account key matches first; the inequality then keeps invoices meeting MRR.
Sign up free to try it on a real business scenario