Skip to main content
Documents
Share
LinkedIn
Facebook
Twitter
Copy
ClausesStatementsKeywordsExpressionsFunctionsIndexesPerformance Optimization

MySQL NOT Keyword

The NOT keyword in MySQL is used to negate a condition or expression. It is commonly employed in logical operations to reverse the result of a condition, making it useful for filtering data in SQL queries.

Usage

The NOT keyword is used when you want to exclude specific data or alter the logic of a condition. It is often used in conjunction with other operators like IN, BETWEEN, and EXISTS.

sql
SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;

In this syntax, NOT condition reverses the logic of the specified condition, affecting the rows returned by the query.

Examples

1. Basic NOT Condition

sql
SELECT *
FROM products
WHERE NOT price > 100;

This query retrieves all products with a price of 100 or less, negating the price > 100 condition.

2. Using NOT with IN

sql
SELECT first_name, last_name
FROM employees
WHERE department_id NOT IN (10, 20, 30);

This example selects employees who are not in departments 10, 20, or 30, effectively filtering them out from the result set.

3. Using NOT with EXISTS

sql
SELECT customer_id, customer_name
FROM customers c
WHERE NOT EXISTS (
  SELECT 1
  FROM orders o
  WHERE o.customer_id = c.customer_id
);

Here, the query fetches customers who have not placed any orders, using NOT EXISTS to exclude those with matching entries in the orders table.

4. Using NOT with BETWEEN

sql
SELECT *
FROM orders
WHERE order_date NOT BETWEEN '2023-01-01' AND '2023-12-31';

This query fetches orders placed outside of the specified date range, effectively excluding orders within the year 2023.

Tips and Best Practices

  • Use NOT sparingly. Overusing NOT can make queries less intuitive and harder to read; consider whether the logic can be simplified.
  • Combine with parentheses. When using NOT with complex conditions, parentheses can clarify the intended logic, especially when combined with AND and OR operators.
  • Check performance. Negations can sometimes lead to less efficient queries, particularly when applied to indexed columns; test performance and optimize as needed.
  • Be clear with conditions. Ensure that the conditions being negated are precise to avoid unintended data exclusion.