As a senior Postgresql developer, I recently had the opportunity to work with Postgresql order by limit. In this article, I’ll explain everything you need to know about using PostgreSQL’s ORDER BY LIMIT clauses effectively.
Postgresql order by limit
LIMIT in Postgresql permits us to retrieve only a portion of the rows generated by the rest of the query. If a limit count is given, no more than that many rows will be returned.
When using LIMIT, using an ORDER BY clause that constrains the result rows into a unique order is essential. Otherwise, we can get an unpredictable subset of the query’s rows.
Syntax
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...
LIMIT count [OFFSET offset];
Let us consider multiple examples
Example 1: Simple ORDER BY LIMIT
The below query is to retrieve the top-selling products. This query returns the 2 products with the highest sales amounts. The DESC keyword ensures we get results in descending order (highest to lowest).
SELECT product_name, amount
FROM sales
ORDER BY amount DESC
LIMIT 2;
After executing the above SQL query, I got the expected output, as shown in the screenshot below.

Example 2: Multi-Column Ordering with ORDER BY LIMIT
Now, when I need to sort by multiple criteria. For instance, when analyzing sales for a New York financial services client. The below query returns the 3 most recent sales, and if various sales occurred on the same date, they’re further sorted by amount in descending order.
SELECT product_name, amount, sale_date
FROM sales
ORDER BY sale_date DESC, amount DESC
LIMIT 3;
After executing the above query, I got the expected output as shown in the screenshot below.

Check out PostgreSQL Order By Desc Limit 1
Example 3: Using OFFSET for Pagination with ORDER BY LIMIT
Pagination is essential when developing web applications for clients like Texas-based retail chains. OFFSET lets you skip a specified number of rows before starting to return rows. This retrieves records 3-10 when sorted by sale date (newest first), which is perfect for page 3 of a pagination system with 3 items per page.
SELECT product_name, amount, sale_date
FROM sales
ORDER BY sale_date DESC
LIMIT 4 OFFSET 3;
After executing the above query, I got the expected output, as shown in the screenshot below.

Method 4: Using NULLS FIRST/LAST with ORDER BY LIMIT
The below query returns the top 4 sales with the highest discounts, placing any NULL discount values at the end of the result set. We can execute the below query for this purpose.
SELECT product_name, amount, discount
FROM sales
ORDER BY discount DESC NULLS LAST
LIMIT 4;
Conclusion
PostgreSQL’s ORDER BY LIMIT functionality is essential for efficient data retrieval and analysis.
Consider alternatives like keyset pagination for complex pagination needs. Always ensure your ORDER BY clause produces excellent results when combined with LIMIT and OFFSET.
You may also like the articles below.
- PostgreSQL Order By
- PostgreSQL INSERT Multiple Rows (Complete tutorial)
- What is PostgreSQL Good For
- PostgreSQL ADD COLUMN
I am Bijay having more than 15 years of experience in the Software Industry. During this time, I have worked on MariaDB and used it in a lot of projects. Most of our readers are from the United States, Canada, United Kingdom, Australia, New Zealand, etc.
Want to learn MariaDB? Check out all the articles and tutorials that I wrote on MariaDB. Also, I am a Microsoft MVP.