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.

Pictorial 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


Sample table: customer


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.