Skip to main content
Documents
Basic SyntaxMath FunctionsDate FunctionsJSON FunctionsDatabasesTables & Schema ManagementString FunctionsTriggersIndexes

PostgreSQL LIMIT

The `LIMIT` clause in PostgreSQL is used to constrain the number of rows returned by a query. It is particularly useful for paginating results or retrieving a subset of data.

Usage

The `LIMIT` clause is applied to control the maximum number of rows returned by a SQL query. It is typically used in conjunction with `ORDER BY` to retrieve the top N rows from a result set.

SELECT column1, column2, ...
FROM table_name
[ORDER BY column_name] 
LIMIT number_of_rows;

In this syntax, `LIMIT number_of_rows` specifies the maximum number of rows to return.

Examples

1. Basic Limit

SELECT * 
FROM products
LIMIT 5;

This example retrieves the first 5 rows from the `products` table.

2. Limit with Order

SELECT name, price
FROM products
ORDER BY price DESC
LIMIT 3;

This query returns the top 3 most expensive products by ordering the results in descending order of the price.

3. Limit with Offset

SELECT order_id, customer_name
FROM orders
ORDER BY order_date
LIMIT 10 OFFSET 10;

This query fetches 10 rows starting from the 11th row, useful for pagination when combined with `ORDER BY`.

Tips and Best Practices

  • Use with ORDER BY. Always pair `LIMIT` with `ORDER BY` to ensure consistent results, especially when the table has no primary key or unique identifier.
  • Consider pagination. Use `LIMIT` in conjunction with `OFFSET` for paginated data retrieval. Be aware that using large offsets can impact performance as PostgreSQL must scan through the rows to reach the specified offset.
  • Optimize performance. Be mindful of performance implications when using `LIMIT` on large datasets; consider using indexes. For large offsets, explore query optimization techniques.
  • Combine with constraints. Use `LIMIT` with `WHERE` to refine the dataset further before limiting the result.
  • Explore alternatives. Consider using the `FETCH FIRST` clause as an alternative to `LIMIT`, especially if you are more familiar with SQL standards.
  • Understand edge cases. Setting `LIMIT` to zero will return an empty result set. Using a negative number for `LIMIT` is not valid and will result in an error.