Course
In the realm of SQL, understanding comparison operators is crucial for data manipulation and analysis. Among these operators, NOT EQUAL
(<>
or !=
) plays a vital role in filtering data that does not match specified criteria. This tutorial aims to demystify the NOT EQUAL
operator, guiding beginners through its significance, application, and nuances for efficient SQL querying.
Introduction to Comparison Operators
Comparison operators are foundational in SQL, allowing for the evaluation of data against specific conditions. These include operators for equality (=
), inequality (<>
, !=
), greater than (>
), and less than (<
), among others. Notably, SQL provides two symbols for denoting inequality: <>
and !=
, both serving the same purpose but with <>
being the preferred choice for adhering to ISO standards.
Exploring SQL NOT EQUAL Operator
Why use NOT EQUAL?
The NOT EQUAL operator (<>
or !=
) is used for querying data from a table that does not meet a certain condition. It enables the exclusion of specific rows from the results, making data analysis more precise and relevant.
Syntax and usage
The syntax for using the NOT EQUAL operator is straightforward, involving the comparison of two expressions to filter out non-matching data. It can be used with a variety of different clauses and conditions, such as WHERE
, JOIN
, and HAVING
.
WHERE clause
It can be used to filter rows where a column's value does not match a specified value. For instance, to select products from a database excluding a specific product ID, one would use the following code:
SELECT *
FROM products
WHERE ProductID <> 1;
JOIN conditions
It can be used in ON
clauses to define conditions for joining tables.
SELECT e1.name, e2.name
FROM employees e1
JOIN employees e2
ON e1.manager_id != e2.employee_id;
HAVING clause
It can be used to filter grouped data based on aggregate conditions.
SELECT department_id, COUNT(*)
FROM employees
GROUP BY department_id
HAVING COUNT(*) != 5;
CASE statements
It can be used for conditional logic to return specific results when the condition is met.
SELECT name,
CASE
WHEN department_id != 10 THEN 'Other Department'
ELSE 'Department 10'
END AS department_category
FROM employees;
UPDATE Statements
It can be used in the WHERE
clause to specify rows to be updated based on non-equality.
UPDATE employees
SET salary = salary * 1.1
WHERE job_id != 'Manager';
DELETE statements
It can be used in the WHERE
clause to identify rows to delete where the condition is true.
DELETE FROM employees
WHERE department_id != 10;
Practical Examples
Let's delve deeper into the practical application of the SQL NOT EQUAL operator with expanded examples that demonstrate its versatility and power in querying databases. These examples will illustrate how to effectively use != and <> in various scenarios, enhancing your SQL querying skills.
Example 1: Filtering specific records
Imagine a database table named Employees with columns EmployeeID
, Name
, and DepartmentID
. To exclude employees from a specific department, say DepartmentID 3
, you can use the NOT EQUAL
operator:
EmployeeID |
Name |
DepartmentID |
1 |
Alice Johnson |
1 |
2 |
Bob Smith |
2 |
3 |
Carol White |
3 |
4 |
David Green |
2 |
5 |
Erin Black |
4 |
SELECT EmployeeID, Name, DepartmentID
FROM Employees
WHERE DepartmentID != 3;
This query retrieves all employees who are not part of DepartmentID 3, effectively filtering out individuals from that specific department.
EmployeeID |
Name |
DepartmentID |
1 |
Alice Johnson |
1 |
2 |
Bob Smith |
2 |
4 |
David Green |
2 |
5 |
Erin Black |
4 |
Example 2: Combining conditions
Now, suppose you want to exclude employees from DepartmentID 3
and those whose names begin with 'A'. This requires combining the NOT EQUAL
operator with other conditions using AND
and LIKE
:
SELECT EmployeeID, Name, DepartmentID
FROM Employees
WHERE DepartmentID <> 3 AND Name NOT LIKE 'A%';
This query demonstrates how to use NOT EQUAL
in conjunction with LIKE
for pattern matching, excluding a subset of employees based on department and name criteria.
EmployeeID |
Name |
DepartmentID |
2 |
Bob Smith |
2 |
4 |
David Green |
2 |
5 |
Erin Black |
4 |
Example 3: Handling NULL values
Dealing with NULL
values in SQL requires special attention since NULL
represents an unknown. To find employees whose ManagerID
is not known (i.e., NULL
), you might think to use !=
or <>
. However, the correct approach is using IS NOT NULL
:
EmployeeID |
Name |
DepartmentID |
ManagerID |
1 |
Alice Johnson |
1 |
NULL |
2 |
Bob Smith |
2 |
1 |
3 |
Carol White |
3 |
1 |
4 |
David Green |
2 |
2 |
5 |
Erin Black |
4 |
3 |
Updated Employees Table
SELECT EmployeeID, Name
FROM Employees
WHERE ManagerID IS NOT NULL;
This query fetches employees who have a known ManagerID
, excluding those with a NULL ManagerID
. It highlights the importance of understanding how SQL interprets NULL
values in comparison operations.
EmployeeID |
Name |
2 |
Bob Smith |
3 |
Carol White |
4 |
David Green |
5 |
Erin Black |
Example 4: Using NOT EQUAL with aggregation
Consider you want to analyze sales data from the Sales table, excluding sales from the year 2020. Combining GROUP BY
with NOT EQUAL
allows you to aggregate data while filtering out specific years:
SaleID |
SaleDate |
Quantity |
1 |
2019-05-01 |
2 |
2 |
2019-08-15 |
1 |
3 |
2020-04-20 |
3 |
4 |
2021-07-22 |
1 |
5 |
2021-11-05 |
2 |
6 |
2022-01-30 |
4 |
Sales Table
SELECT YEAR(SaleDate) AS SaleYear, COUNT(*) AS TotalSales
FROM Sales
GROUP BY YEAR(SaleDate)
HAVING YEAR(SaleDate) <> 2020;
This query aggregates sales by year and excludes the total sales for the year 2020, showcasing how NOT EQUAL
can be used with aggregate functions and GROUP BY
to refine your data analysis.
SaleYear |
TotalSales |
2019 |
2 |
2021 |
2 |
2022 |
1 |
Example 5: Performance optimization
When querying large datasets, performance can be affected by how you structure your NOT EQUAL
conditions. Suppose you're working with a Products
table and want to exclude products in categories 5 and 7. Instead of using NOT EQUAL
multiple times, it might be more efficient to use NOT IN
:
ProductID |
Name |
CategoryID |
1 |
Wireless Mouse |
1 |
2 |
Gaming Keyboard |
5 |
3 |
USB-C Charging Cable |
3 |
4 |
Bluetooth Speakers |
7 |
5 |
Ergonomic Chair |
2 |
6 |
LED Monitor |
4 |
7 |
Smartwatch |
5 |
8 |
Desk Lamp |
6 |
9 |
Webcam |
2 |
SELECT ProductID, Name
FROM Products
WHERE CategoryID NOT IN (5, 7);
This query is more concise and potentially more efficient on large datasets, illustrating an optimization technique when excluding multiple specific values.
ProductID |
Name |
1 |
Wireless Mouse |
3 |
USB-C Charging Cable |
5 |
Ergonomic Chair |
6 |
LED Monitor |
8 |
Desk Lamp |
9 |
Webcam |
Through these examples, you've seen the flexibility and power of the SQL NOT EQUAL
operator in various scenarios, from simple exclusions to complex queries involving aggregation and performance considerations.
As you practice these examples, remember that the choice between !=
and <>
is largely stylistic, but consistency in your use will make your SQL queries easier to read and maintain.
Performance Considerations
While the NOT EQUAL
operator is powerful, its use should be balanced with performance considerations. Inequality operations can sometimes lead to less efficient query execution plans, such as full table scans. Alternatives like the IN
operator or equality conditions might offer better performance in certain scenarios.
Conclusion
The NOT EQUAL
operator is a fundamental tool in SQL for data filtering. By understanding its application and considering performance implications, practitioners can craft efficient and effective queries. Remember, the choice between <>
and !=
should lean towards <>
for compliance with ISO standards, ensuring your SQL code is robust and universally interpretable.
To learn more about the SQL NOT EQUAL
operator and explore more SQL basics, check out our SQL Basics Cheat Sheet and SQL Fundamentals skill track.

As a certified data scientist, I am passionate about leveraging cutting-edge technology to create innovative machine learning applications. With a strong background in speech recognition, data analysis and reporting, MLOps, conversational AI, and NLP, I have honed my skills in developing intelligent systems that can make a real impact. In addition to my technical expertise, I am also a skilled communicator with a talent for distilling complex concepts into clear and concise language. As a result, I have become a sought-after blogger on data science, sharing my insights and experiences with a growing community of fellow data professionals. Currently, I am focusing on content creation and editing, working with large language models to develop powerful and engaging content that can help businesses and individuals alike make the most of their data.
SQL NOT IN FAQs
What does the SQL NOT EQUAL operator do?
The SQL NOT EQUAL operator (<>
or !=
) filters data by excluding rows that match a specific condition. It is commonly used to retrieve data that does not meet the specified criteria in a query.
Are <> and != the same in SQL?
Yes, <>
and !=
serve the same purpose in SQL, representing inequality. However, <>
is preferred as it aligns with ISO standards, making queries more universally interpretable.
Can the NOT EQUAL operator handle NULL values?
No, the NOT EQUAL operator does not handle NULL values directly. To filter out NULLs, you need to use the IS NOT NULL
condition, as NULL represents an unknown value in SQL.
How does performance differ when using NOT EQUAL in SQL queries?
Using NOT EQUAL can sometimes lead to less efficient query execution plans, such as full table scans. To optimize performance, consider using alternatives like the IN
operator or indexed equality conditions when appropriate.
Can I combine the NOT EQUAL operator with other SQL conditions?
Yes, the NOT EQUAL
operator can be combined with other conditions using logical operators like AND
and OR
, as well as pattern-matching functions like LIKE
, to create more complex and precise queries.