1. sql
  2. /references
  3. /where



The WHERE clause in SQL is used to filter the rows of a SELECT, UPDATE, or DELETE statement. The WHERE clause is used to specify a condition that must be met for a row to be returned or affected. The syntax for the WHERE clause is:

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


For example, the following SQL statement would return all rows from the customers table where the value in the country column is 'Germany':

FROM customers 
WHERE country = 'Germany';

The condition in the WHERE clause can use any of the comparison operators, such as =, <>, >, <, >=, <=, BETWEEN, LIKE, IN, IS NULL, IS NOT NULL, etc.

You can also chain multiple conditions together using the logical operators AND and OR. For example:

FROM orders 
WHERE customer_id = 1 
AND order_date >= '2022-01-01';

This will select all orders that both have a customer_id of 1 and have an order_date after January 1st 2022.

It's important to keep in mind that the WHERE clause filters out the rows before any grouping or aggregation is done, so, for example, if you are using a GROUP BY clause or an aggregate function like COUNT() or SUM(), the filtering will occur before those operations. This can be useful to also optimize query speed correctly.

Best Practices

There are a few best practices to keep in mind when using the WHERE clause:

  • Use indexes: Make sure that the columns used in the WHERE clause are indexed. This will improve query performance, especially for large tables.

  • Use the appropriate operator for the type of data you are comparing. For example, use = for exact matches and LIKE for partial matches.

  • Use parentheses: Use parentheses to group conditions and explicitly define the order of operations. This makes it easier to read and understand the query.

  • When not necessary, avoid using very broad conditions such as LIKE '%', as it will force the engine to scan all of the table to check the condition.

  • If possible, avoid using functions or subqueries in the WHERE clause, since these can slow down the query.