w3resource

SQL Non Equi Join


NON EQUI JOIN

The SQL NON EQUI JOIN uses comparison operator instead of the equal sign like >, <, >=, <= along with conditions.

Visual presentation of SQL Non Equi Join:

Sql right join image


Syntax:

SELECT * 
FROM table_name1, table_name2 
WHERE table_name1.column [> |  < |  >= | <= ] table_name2.column;

Example:

Here is an example of non equi join in SQL between two tables

Sample table: orders
   ORD_NUM ORD_AMOUNT ADVANCE_AMOUNT ORD_DATE  CUST_CODE       AGENT_CODE      ORD_DESCRIPTION
---------- ---------- -------------- --------- --------------- --------------- -----------------
    200114       3500           2000 15-AUG-08 C00002          A008
    200122       2500            400 16-SEP-08 C00003          A004
    200118        500            100 20-JUL-08 C00023          A006
    200119       4000            700 16-SEP-08 C00007          A010
    200121       1500            600 23-SEP-08 C00008          A004
    200130       2500            400 30-JUL-08 C00025          A011
    200134       4200           1800 25-SEP-08 C00004          A005
    200108       4000            600 15-FEB-08 C00008          A004
    200103       1500            700 15-MAY-08 C00021          A005
    200105       2500            500 18-JUL-08 C00025          A011
	..............

View the table

Sample table : customer
  
+-----------+-------------+-------------+--------------+--------------+-------+-------------+-------------+-------------+---------------+--------------+------------+  
|CUST_CODE  | CUST_NAME   | CUST_CITY   | WORKING_AREA | CUST_COUNTRY | GRADE | OPENING_AMT | RECEIVE_AMT | PAYMENT_AMT |OUTSTANDING_AMT| PHONE_NO     | AGENT_CODE |
+-----------+-------------+-------------+--------------+--------------+-------+-------------+-------------+-------------+---------------+--------------+------------+
| C00013    | Holmes      | London      | London       | UK           |     2 |     6000.00 |     5000.00 |     7000.00 |       4000.00 | BBBBBBB      | A003       |
| C00001    | Micheal     | New York    | New York     | USA          |     2 |     3000.00 |     5000.00 |     2000.00 |       6000.00 | CCCCCCC      | A008       |
| C00020    | Albert      | New York    | New York     | USA          |     3 |     5000.00 |     7000.00 |     6000.00 |       6000.00 | BBBBSBB      | A008       |
| C00025    | Ravindran   | Bangalore   | Bangalore    | India        |     2 |     5000.00 |     7000.00 |     4000.00 |       8000.00 | AVAVAVA      | A011       |
| C00024    | Cook        | London      | London       | UK           |     2 |     4000.00 |     9000.00 |     7000.00 |       6000.00 | FSDDSDF      | A006       |
| C00015    | Stuart      | London      | London       | UK           |     1 |     6000.00 |     8000.00 |     3000.00 |      11000.00 | GFSGERS      | A003       |
| C00002    | Bolt        | New York    | New York     | USA          |     3 |     5000.00 |     7000.00 |     9000.00 |       3000.00 | DDNRDRH      | A008       |
| C00018    | Fleming     | Brisban     | Brisban      | Australia    |     2 |     7000.00 |     7000.00 |     9000.00 |       5000.00 | NHBGVFC      | A005       |
| C00021    | Jacks       | Brisban     | Brisban      | Australia    |     1 |     7000.00 |     7000.00 |     7000.00 |       7000.00 | WERTGDF      | A005       |
| C00019    | Yearannaidu | Chennai     | Chennai      | India        |     1 |     8000.00 |     7000.00 |     7000.00 |       8000.00 | ZZZZBFV      | A010       |
...........
+-----------+-------------+-------------+--------------+--------------+-------+-------------+-------------+-------------+---------------+--------------+------------+

View the table

To get order number and order amount columns from orders table aliased as 'a' and customer name and working area columns from customer table aliased as 'b' after joining said two tables with the following condition -

1. order amount of orders table matches any of the opening amounts of customer table,

the following SQL statement can be used:

SQL Code:


-- Selecting columns ord_num, ord_amount, cust_name, and working_area from tables orders and customer
SELECT a.ord_num, a.ord_amount, b.cust_name, b.working_area 
-- Specifying the tables involved in the query and their aliases
FROM orders a, customer b 
-- Filtering the rows where the ord_amount is between the opening_amt and opening_amt (redundant condition)
WHERE a.ord_amount BETWEEN b.opening_amt AND b.opening_amt;

Explanation:

  • This SQL query retrieves specific information from the tables orders and customer.

  • It selects four columns: ord_num and ord_amount from the orders table (aliased as a), and cust_name and working_area from the customer table (aliased as b).

  • The query performs an implicit join between the orders and customer tables, combining all rows from both tables.

  • It then applies a condition using the WHERE clause, specifying that the ord_amount from the orders table must be between the opening_amt and opening_amt from the customer table.

  • However, this condition is redundant as it always evaluates to true (any value is between itself and itself).

  • The result will likely include all orders along with the names of customers and their working areas, but the condition doesn't filter the data as intended.

Output:

  ORD_NUM ORD_AMOUNT CUST_NAME                                WORKING_AREA
--------- ---------- ---------------------------------------- -------------
   200110       3000 Micheal                                  New York
   200101       3000 Micheal                                  New York
   200108       4000 Cook                                     London
   200119       4000 Cook                                     London
   200113       4000 Cook                                     London
   200108       4000 Karl                                     London
   200119       4000 Karl                                     London
   200113       4000 Karl                                     London

Key points to remember

Click on the following to get the slides presentation -

SQL JOINS, slide presentation

See our Model Database

Here is a new document which is a collection of questions with short and simple answers, useful for learning SQL as well as for interviews.

Check out our 1000+ SQL Exercises with solution and explanation to improve your skills.

Previous: SQL EQUI JOIN
Next: SQL INNER JOIN



Follow us on Facebook and Twitter for latest update.