SQL

SQL WHERE Clause: Syntax, Usage, and Examples

The SQL WHERE clause lets you filter records by applying conditions to your queries. It tells the database to return only rows that match specific criteria, making your queries more precise and efficient.

How to Use the SQL WHERE Clause

Use the SQL WHERE clause in SELECT, UPDATE, DELETE, or other DML statements to restrict which rows are affected. The basic syntax looks like this:

SELECT column1, column2
FROM table_name
WHERE condition;

You can compare column values using operators like =, !=, >, <, >=, <=, BETWEEN, LIKE, IN, and IS NULL.

SELECT * FROM Employees
WHERE Department = 'Marketing';

Use this to find all employees who work in the Marketing department.

To combine multiple conditions, use AND, OR, and parentheses:

SELECT * FROM Orders
WHERE Status = 'Shipped' AND OrderDate >= '2023-01-01';

You can include more complex logic, like ranges or pattern matches:

SELECT * FROM Products
WHERE Price BETWEEN 50 AND 200 AND Name LIKE 'A%';

You can filter rows in just about any SQL query by placing the condition after the WHERE keyword.

When to Use the WHERE Clause in SQL

Use the SQL WHERE clause any time you want to focus your query on just a portion of a table instead of fetching or modifying everything.

Retrieve Targeted Results

You often don’t need the entire dataset. If you're searching for orders from a specific customer, rows matching a name pattern, or values in a certain range, the WHERE clause helps you zero in.

Update or Delete Specific Records

Without a WHERE clause, an UPDATE or DELETE statement affects all rows. To modify only certain ones—like marking overdue invoices or deleting inactive users—add a condition.

Validate Data

When testing queries or checking data quality, filtering with WHERE helps you understand what’s happening with a subset of your data.

Examples of the WHERE Clause in SQL

Let’s walk through practical uses of WHERE in real-world queries.

Example 1: Filtering by Exact Match

SELECT * FROM Customers
WHERE Country = 'Germany';

Use this to get all customers located in Germany.

Example 2: Using Logical Operators

SELECT * FROM Orders
WHERE Status = 'Processing' OR Status = 'Shipped';

Use OR when you want any one of multiple conditions to match.

Example 3: Combining Multiple Conditions

SELECT * FROM Employees
WHERE Department = 'Engineering' AND Salary > 70000;

Use AND when both conditions need to be true.

Example 4: Pattern Matching with LIKE

SELECT * FROM Products
WHERE ProductName LIKE 'Pro%';

Use LIKE when you want to match a pattern. % means any number of characters.

Example 5: NULL Checks

SELECT * FROM Subscriptions
WHERE CancellationDate IS NULL;

Use IS NULL to find rows where a column has no value.

Example 6: Filtering Date Ranges

SELECT * FROM Sales
WHERE SaleDate BETWEEN '2022-01-01' AND '2022-12-31';

Use BETWEEN when working with numeric or date ranges.

Learn More About the WHERE Clause in SQL

SQL Query WHERE Clause in Different Statements

You’re not limited to using the WHERE clause in SELECT queries. You can use it in DELETE and UPDATE as well:

UPDATE Employees
SET Status = 'Inactive'
WHERE LastLogin < '2023-01-01';

DELETE FROM Orders
WHERE OrderDate < '2021-01-01';

Without WHERE, both would affect the entire table.

SQL Multiple WHERE Clauses?

Technically, SQL doesn't allow more than one WHERE clause per query, but you can combine as many conditions as you like using AND/OR. You can group conditions with parentheses for clarity:

SELECT * FROM Users
WHERE (Country = 'US' AND Status = 'Active') OR (Country = 'Canada' AND Role = 'Admin');

This flexibility allows for very specific filtering.

Join and WHERE Clause SQL Example

In a JOIN query, the WHERE clause filters the final result after the tables are joined:

SELECT Orders.OrderID, Customers.Name
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID
WHERE Customers.Country = 'UK';

Use WHERE after JOINs to apply conditions to any of the involved tables.

SQL CASE Statement in WHERE Clause

You can use CASE expressions inside a WHERE clause when the condition depends on a value:

SELECT * FROM Invoices
WHERE
  CASE
    WHEN PaymentType = 'Credit' THEN Amount > 1000
    ELSE Amount > 500
  END;

This lets you apply conditional logic directly in your filter.

HAVING vs WHERE Clause in SQL

The WHERE clause filters individual rows before any grouping happens. The HAVING clause filters groups after the GROUP BY step.

-- WHERE filters rows before grouping
SELECT Department, COUNT(*)
FROM Employees
WHERE Status = 'Active'
GROUP BY Department;

-- HAVING filters groups after grouping
SELECT Department, COUNT(*)
FROM Employees
GROUP BY Department
HAVING COUNT(*) > 10;

Use WHERE for raw data filtering and HAVING for group-level filtering.

Performance Tips for WHERE

To improve performance when using the SQL WHERE clause:

  • Use indexed columns in your condition if possible
  • Avoid wrapping columns in functions like YEAR(OrderDate) in the WHERE clause, as it may prevent index usage
  • Be cautious with OR, which can increase query complexity—rewrite with IN if applicable
  • Use proper data types and date formats when filtering dates

Here’s a rewrite with IN:

SELECT * FROM Orders
WHERE Status IN ('Processing', 'Pending');

This is cleaner than writing multiple OR conditions and easier to read.

Use the SQL WHERE clause to filter data effectively in any SQL operation. It’s a critical part of writing readable, maintainable queries and preventing unintentional data changes. Whether you’re cleaning up records, pulling reports, or managing permissions, the WHERE clause helps you control the scope of your work and keeps your data precise.

Learn SQL for Free
Start learning now
button icon
To advance beyond this tutorial and learn SQL by doing, try the interactive experience of Mimo. Whether you're starting from scratch or brushing up your coding skills, Mimo helps you take your coding journey above and beyond.

Sign up or download Mimo from the App Store or Google Play to enhance your programming skills and prepare for a career in tech.

You can code, too.

© 2025 Mimo GmbH